2

在 INTERNET 中搜索了几次后,似乎显然无法使用路径与 bat 文件(位于当前目录)不同的文件运行批处理。那么您能否告诉我是否有解决此问题的方法,而不将此文件复制到当前目录?

有关更多信息,请查看下面我每次使用当前目录中的参数运行 bat 时遇到的错误。我不明白为什么回显“%~f1”会成功返回“D:\WorkpaceDEV\opt\ABC\IJS_002.TXT”,而我的文本文件绝对存在于文件夹 D:\WorkpaceDEV\opt\ABC”中。

C:\Users\bob\Desktop\DEV\Workspace>
C:\Users\bob\Desktop\DEV\Workspace>run.bat "D:\WorkpaceDEV\opt\ABC\IJS_002.TXT"
"D:\WorkpaceDEV\opt\ABC\IJS_002.TXT"
La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.

这是我的原始 bat 文件

     @ echo off
    echo "%~f1"
    findstr /r "I.*=" "%~f1" >outer.TXT

在我看来:我收到的错误消息与配置问题有关,但我不确定!如果有帮助,我在 7 32。如果您遇到这个问题,请告诉我。如果是这样的话,或许我们可以断定这是微软的Bug?我真的被封锁了,我期待着从你那里得到。非常感谢你让我对这个问题大开眼界

4

2 回答 2

3

好吧,使用%~f1并不能保证文件存在!如果给批处理文件的参数包括完整路径,%~f1则只返回相同的信息,不检查文件是否存在。

我建议你测试下面的批处理文件:

@ echo off
echo "%~f1"
if exist "%~f1" (
   findstr /r "I.*=" "%~f1" >outer.TXT
) else (
   echo File does NOT exist!
)
于 2013-06-03T22:18:21.780 回答
0

echo %ComSpec% 在提示命令中未显示任何内容。我不知道为什么。因此将其设置为“C:\Windows\system32\cmd.exe”即可解决问题。

谢谢大家的调查。

于 2013-06-04T19:55:34.960 回答