Batch file 批处理文件系统在循环后找不到文件
我正在创建一个批处理文件,以打开远程计算机管理控制台,方法是将用户ID作为输入,并将文件data.csv第2列中的计算机名作为输入。第一次尝试时效果很好。当它返回到:开始标签时。并要求提供其他信息。它给出了错误。系统找不到文件。/data.csv 我的代码是Batch file 批处理文件系统在循环后找不到文件,batch-file,label,goto,Batch File,Label,Goto,我正在创建一个批处理文件,以打开远程计算机管理控制台,方法是将用户ID作为输入,并将文件data.csv第2列中的计算机名作为输入。第一次尝试时效果很好。当它返回到:开始标签时。并要求提供其他信息。它给出了错误。系统找不到文件。/data.csv 我的代码是 :start set /p Input="Enter User-ID:" for /f "usebackq tokens=1-4 delims=," %%a in (".\data.csv") do (
:start
set /p Input="Enter User-ID:"
for /f "usebackq tokens=1-4 delims=," %%a in (".\data.csv") do (
if %input% ==%%a ("cmd /c Start /B /wait compmgmt.msc –a /computer=%%b")
)
cls
GOTO start
对批处理文件中的路径使用%dp0(而不是像这样的相对路径)是一种很好的做法。这样,如果当前工作文件夹发生更改,文件将始终被定位 因此,请更改为%dp0data.csv
:start
set /p Input="Enter User-ID:"
PUSHD
for /f "usebackq tokens=1-4 delims=," %%a in (".\data.csv") do (
if %input% ==%%a ("cmd /c Start /B /wait compmgmt.msc –a /computer=%%b")
)
POPD
cls
GOTO start
应该恢复健全性,在下一个周期之前,推送目录,然后恢复它。dot也可以有意引用%CD%。但在所示的代码中,两者都不应改变。选择固定(非相对)路径是更好的选择。太好了,谢谢你,乔。太棒了,亲爱的,还有一个问题。我必须使它成为exe文件。因此,当我将其更改为exe时,它不起作用。但是当打开.bat时,它工作得很好。为什么要使用
cmd/C
和start
?为什么要引用整个命令行?