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