0

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

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

批处理文件现在看起来像这样:

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

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

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

$Item(1)$_IS_OPEN

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

4

2 回答 2

0

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

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

尽管这对于变量来说似乎是一个很奇怪的名称。

于 2013-05-05T19:23:40.930 回答
0

我建议你试试

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

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

下一行将结果回显到控制台,如果测试成功,可能会被删除。

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

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


修改为将 NAME 部分的前 2 个字符替换为“AA”

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(扩展名))

于 2013-05-06T00:30:29.280 回答