1

У меня есть пакетный файл. В котором мне нужно запустить еще одну копию себя в новом окне с параметром. Я попытался запустить команду start "" "%~0" "Param" но он сказал, '"Param"' is not recognized as an internal or external command, operable program or batch file. и не начал ничего Единственный способ заставить его работать - это start %~0 Param , но я подумал, что это может привести к сбою, если в пути есть пробелы. Итак, как правильно запустить другой экземпляр текущего пакетного файла с параметрами?

3 ответа3

2

Я бы запустил вторую оболочку cmd, что-то вроде:

start "" Cmd.exe %~0 parameters

просто чтобы дать каждой итерации командного файла свою собственную командную оболочку.


Примечание от OP: я должен был сделать следующее:

start cmd.exe /C %~0 parameters
1

Чтобы вызвать другой пакетный файл из пакетного файла, используйте call "name of script.bat" или "start" name of script.bat "

Хотя вы можете сделать это без, неожиданные результаты будут происходить, учитывая, что он будет постоянно вызывать себя.

так что технически, вы можете просто написать

%0 MyParam
1

Чтобы избежать бесконечного цикла, проверьте наличие аргументов:

:: Q:\Test\2019\01\25\SU_1298393.cmd
@Echo off
If "%~1" neq "" goto :HasArgs
Echo restart with parms
"%~0" "parms"

:HasArgs
Echo %0 started with %*
Pause
Exit /B

Образец прогона:

> SU_1298393.cmd
restart with parms
"SU_1298393.cmd" started with "parms"
Press any key to continue . . .

> SU_1298393.cmd foo bar
SU_1298393.cmd started with foo bar
Press any key to continue . . .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .