Batch file 以不属于当前目录的文件作为参数运行批处理时出错

Batch file 以不属于当前目录的文件作为参数运行批处理时出错,batch-file,parameters,path,Batch File,Parameters,Path,在INTERNET上进行多次搜索后,显然不可能使用路径与bat文件(位于当前目录)不同的文件运行批处理。因此,您能否告诉我,如果不将此文件复制到当前目录,是否有解决此问题的方法 有关更多信息,请查看下面的错误,我每次使用当前目录中的参数运行bat时都会遇到错误。我不明白为什么回显“%~f1”会成功返回“D:\WorkpaceDEV\opt\ABC\IJS_002.TXT”,并且我的文本文件绝对存在于文件夹D:\WorkpaceDEV\opt\ABC”中 这是我的原始bat文件 @ ec

在INTERNET上进行多次搜索后,显然不可能使用路径与bat文件(位于当前目录)不同的文件运行批处理。因此,您能否告诉我,如果不将此文件复制到当前目录,是否有解决此问题的方法

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

这是我的原始bat文件

     @ echo off
    echo "%~f1"
    findstr /r "I.*=" "%~f1" >outer.TXT
在我看来:我收到的错误消息与配置问题有关,但我不确定! 如果可以的话,我是7 32。如果你遇到这个问题,也请告诉我。如果是这样的话,也许我们可以得出结论,这是微软的错误?我真的被阻止了,我期待你的回复。
非常感谢您让我对这个问题有所了解。

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

我建议您测试以下批处理文件:

@ echo off
echo "%~f1"
if exist "%~f1" (
   findstr /r "I.*=" "%~f1" >outer.TXT
) else (
   echo File does NOT exist!
)

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


谢谢大家的调查。

请尝试
run.bat“D:\WorkspaceDEV\opt\ABC\IJS_002.TXT”
我确实尝试了“D:\WorkspaceDEV\opt\ABC\IJS_002.TXT”。请添加第二个“D:\WorkspaceDEV\opt\ABC\IJS\IJS_002.TXT”“这是从命令提示符写入的。如果存在
findstr.exe
,请查看
WINDOWS\system32
。是的,findstr存在于system32目录中。如果我在我当前的目录下,没有问题,可以找到我想要的项目,但我不在那里,而且我在其他地方有很多文件。谢谢当你删除引号时,它会说什么“‘f1左右?’对不起,这不能解决我的问题。命令promt显示相同的错误消息。ThanksMething非常奇怪:程序没有进入else条件,因为它显示的错误消息与findstr/r/C“I.*=”“%f1”的错误消息相同添加后/C:它总是给出相同的错误消息。我的操作系统是7-32。我不知道这个问题是否是七个人的问题,我想知道没有解决办法??太糟糕了!
@ echo off
echo "%~f1"
if exist "%~f1" (
   findstr /r "I.*=" "%~f1" >outer.TXT
) else (
   echo File does NOT exist!
)