почему пакетный файл выполняет строки, отличные от тех, которые он содержит

почему пакетный файл выполняет строки, отличные от тех, которые он содержит

Я набрал эту строку в bat-файле (остановитесь, чтобы посмотреть, что было набрано)

    start my_program -m y -f %s_%d_fix -z n
    pause

он в конечном итоге запускает это

    start my_program -m y -f d_fix -z n

как вы можете видеть, часть %s_% удалена,
я попытался выяснить, не приводит ли % к разным чтениям строк, но все в порядке. При вводе в cmd
запущенная программа получает неверные аргументы. Есть мысли по этому поводу? Спасибо.

решение1

Windows Cmd и MS-DOS Command.com используют %для указания переменных окружения. В вашем случае %s_%интерпретируется как расширение переменной ( s_действующее как имя переменной) и расширяется до пустой строки.

Чтобы сохранить %знак неизменным, используйте %%s_%%d_fix.

Связанный контент