Пакетная файловая система не может найти файл после цикла

Я создаю пакетный файл, чтобы открыть консоль управления удаленным компьютером, принимая идентификатор пользователя в качестве входных данных и имя компьютера из 2-го столбца из данных файла.csv. он прекрасно работает с первой попытки. Когда он возвращается к: start label. и попросите другой ввод. это дает ошибку. Система не может найти файл ./данные.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

2 ответа

  1. Рекомендуется использовать %~dp0 для путей в пакетных файлах (вместо относительных путей типа .) таким образом, если текущая рабочая папка изменяется, файл всегда будет находиться.

    Поэтому измените на %~dp0data.csv

  2. :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
    

    следует восстановить здравомыслие, нажав на каталог, а затем восстановить его перед следующим циклом.