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

Batch File System cannot find file after Loop

我正在创建一个批处理文件,通过将用户 ID 作为输入和文件 data.csv 第 2 列的计算机名称来打开远程计算机管理控制台。第一次尝试时效果很好。当它回到 :start 标签时。并征求其他意见。它给出了错误。系统找不到文件 ./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

应该恢复理智,推送目录然后在下一个循环之前恢复它。