我是编程的新手,如果这很简单,请提前道歉。
我正在使用PA File Sight监视文件夹中的打开文件。打开文件时,它会启动一个程序(在这种情况下为批处理文件)并将整个文件路径传递给变量:$ Item(1)$
批处理文件目前看起来像这样:
set FILE_PATH="$Item(1)$"
echo.>%FILE_PATH%_IS_OPEN
我正在尝试让批处理文件在其末尾创建一个带有IS_OPEN的新文件,以便用户知道文件“已打开”
运行批处理文件会在其文件夹中创建以下内容:
$Item(1)$_IS_OPEN
因此,由于某种原因,它不存储路径。
答案 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
(扩展名))