无法将文件路径传递给批处理文件

时间:2013-05-05 19:18:58

标签: batch-file

我是编程的新手,如果这很简单,请提前道歉。

我正在使用PA File Sight监视文件夹中的打开文件。打开文件时,它会启动一个程序(在这种情况下为批处理文件)并将整个文件路径传递给变量:$ Item(1)$

批处理文件目前看起来像这样:

set FILE_PATH="$Item(1)$"
echo.>%FILE_PATH%_IS_OPEN

我正在尝试让批处理文件在其末尾创建一个带有IS_OPEN的新文件,以便用户知道文件“已打开”

运行批处理文件会在其文件夹中创建以下内容:

$Item(1)$_IS_OPEN

因此,由于某种原因,它不存储路径。

2 个答案:

答案 0 :(得分:0)

$Item(1)$似乎是一个常量字符串。如果$Item(1)$是实际环境变量的名称,则第一行应为

set FILE_PATH="%$Item(1)$%"

虽然这对变量来说似乎很奇怪。

答案 1 :(得分:0)

我建议你试试

set FILE_PATH="%~1"
echo. "%FILE_PATH%_IS_OPEN"
echo.>"%FILE_PATH%_IS_OPEN"
PAUSE

这应该将FILE_PATH设置为批处理文件看到的第一个参数 - ~删除任何封闭的引号

下一行将结果回显给控制台,如果测试证明成功,可以删除。

第三行用引号括起建议的文件名,以允许在生成的文件名中使用空格。

PAUSE保持CMD窗口打开,直到您按ENTER以允许您查看结果。如果您的结果符合预期,也可以将其删除。


已修改为使用“AA”

替换NAME部分的前2个字符
set FILE_PATH="%~1"
FOR /f "delims=" %%i IN ("%file_path%") DO (SET dpi=%%~dpi&SET ni=%%~ni&SET xi=%%~xi)
SET file_path=%dpi%AA%ni:~2%%xi%
echo. "%FILE_PATH%_IS_OPEN"
echo.>"%FILE_PATH%_IS_OPEN"
PAUSE

这假定它是需要替换的前2个字符。它的工作原理是假设变量file_path中的文字字符串是一个文件名,奇迹的奇迹,它是。然后将dpi设置为驱动器和路径,ni设置为名称,xi设置为扩展名。然后重建全名,用AA替换名称的前2个字符(dpi(路径)+ AA + ni:2(从第二个字符到结尾的名称) + xi(扩展名))