Я только что попробовал, и это работает так, как вы ожидаете.Что вы получаете?
C:\>type test.bat
set /p var=""
set var=%var:~3%
echo %var%
C:\>test
C:\>set /p var=""
Hello World
C:\>set var=lo World
C:\>echo lo World
lo World
C:\>
Итак, похоже, вам нужны, возможно, две вещи: 1) Какое-то условие выхода из вашего второго цикла.Между меткой :code
и goto code
, когда выполняется условие соответствия (т. Е. if %line:~0,3% == err
). Не зная, что требуется от вашего кода, я бы поместил что-то вроде
if %line:~0,3% == err echo.%line:~3% & pause & exit
Это приостановит и завершит работу, когда найдет совпадающую строку
2) Какое-то условие выхода, если вы достигли конца строк и не было совпадения.Я подозреваю, что именно это и вызывает ошибку, которую вы видите, поскольку ваш входной файл, вероятно, не удовлетворяет этому условию.