2013-05-05 135 views
0

如果这真的很简单,那么我很抱歉提前编程。无法将文件路径传递到批处理文件

我正在使用PA File Sight监视打开文件的文件夹。当一个文件被打开它启动一个程序(在这种情况下批处理文件),并把整个文件路径变量:$项目(1)$

批处理文件看起来像这样的时刻:

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

我试图让该批处理文件在它的结束创建IS_OPEN一个新的文件,使用户知道文件“是打开”

运行批处理文件将创建下列在它的文件夹:

$Item(1)$_IS_OPEN 

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

回答

0

我建议你尝试

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

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

下一行相呼应,结果到控制台并且如果测试证明成功则可以将其移除。

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

暂停状态持续打开CMD窗口,直到您按ENTER以允许您查看结果。如果您的结果符合预期,它也可以被删除。


改性“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个字符来替换NAME部分的第一2个字符。它的工作原理是假设变量file_path中的字符串是一个文件名,奇迹是奇迹。然后将dpi设置为驱动器和路径,ni为名称,xi为扩展名。然后全名被重构,用AA为名称的前2个字符(dpi(路径)+ AA + ni:2(在从第二个字符到端名称)+ xi(分机))

+0

谢谢你今天下午试试吧,让你知道 – 2013-05-06 02:26:18

+0

不错。程序在启动参数中传递文件名的确更有意义。 – GolezTrol 2013-05-06 19:24:14

+0

今天早上工作! (我昨晚试了一下,但没有奏效) – 2013-05-06 19:34:01

0

$Item(1)$看起来像一个常量字符串。如果$Item(1)$是一个实际的环境变量的名字,你的第一行应该是

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

虽然是一个变量似乎是一个很奇怪的名字。

+0

不幸既不选项已经奏效。 – 2013-05-06 07:11:57

+0

该程序还会发送弹出消息,$ Item(1)$被扩展为一个路径。我使用XP如果有什么区别? – 2013-05-06 07:13:01

+0

这会在VBScript中更容易吗?该程序可以触发一个VBScript。 再次感谢 – 2013-05-06 07:17:19

相关问题