Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件系统在循环后找不到文件_Batch File_Label_Goto - Fatal编程技术网

Batch file 批处理文件系统在循环后找不到文件

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 (

我正在创建一个批处理文件,以打开远程计算机管理控制台,方法是将用户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 (
       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
?为什么要引用整个命令行?