Вам потребуется call
пакетный файл, а не start
, потому что он создает новый экземпляр cmd.exe
, чтобы он мог асинхронно запускать вызываемый пакетный файл (как упоминается в jeb *)1006 * здесь ):
if "%~1" == "TEST" (
call F:\test.bat
)
Здесь я хочу отметить некоторые вещи:
%1%
будет интерпретироваться как первый аргументпакетный файл (если есть) и дополнительный знак процента (%
) .Вы, вероятно, хотели здесь первый аргумент, поэтому я заменил %1%
на %1
.Если это не то, что вы хотели, то замените его на имя вашей переменной, но помните, что оно не должно начинаться с цифры! %1
было заменено на %~1
и заключено в кавычки, потому что: %~1
означает первый аргумент без любых окружающих кавычек. - Использование значений в выражении
if
всегда является наилучшей практикой, но если были кавычки, сравнениепотерпит неудачу.
- Добавлен пробел между
==
, только для того, чтобы сделать код более понятным.
Для однострочников см. aschipfl'sкомментарий , это:
if /I "%~1"=="TEST" (call "F:\test.bat")
См. call /?
и if /?
в cmd для получения дополнительной информации о том, как работают эти команды.