我会尽力解释我的问题:
每个例子:
问题是 :
当我启动master.bat时,当前path是“D:\ Master \”然后,当slave_01.bat被执行时,它会尝试从“D:\ Master \”启动setup_01.exe,而不是从“D:\ Master \奴隶\”
REM Master.bat @ECHO OFF TITLE Installing Applications SET mypath=%~dp0 ECHO %mypath:~0,-1% ECHO. ECHO 1) Installing App 1 ECHO. call D:\Master\Slave_01\slave_01.bat" ECHO. ECHO 2) Installing App 2 ECHO. CALL D:\Master\Slave_02\slave_02.bat" PAUSE
slave_0x文件:
REM slave_01.bat TITLE App 1 ECHO. ECHO %mypath:~0,-1% ECHO. ECHO Installing App 1 ECHO Please wait... START /wait setup_01.exe /SILENT /SP- /NORESTART
有没有办法使用slave_0x.bat文件中的当前目录而不是slave_0x.bat中的master.bat文件中的当前目录来从正确的目录启动setup_0x.exe文件?
问候
要启动位于不同目录中的可执行文件,请将相对路径添加到START
命令。 使用%~dp0
来获取当前正在运行的批处理文件的路径。
START /wait %~dp0\setup_01.exe /SILENT /SP- /NORESTART
这将启动可执行文件,但不会更改进程当前目录。
如果您的可执行文件依赖于当前目录,那么您将需要先cd
到该目录。 临时更改目录的最简单方法是pushd
和popd
。
pushd %~dp0 START /wait setup_01.exe /SILENT /SP- /NORESTART popd
注意 :如果路径或可执行文件名称可以包含空格,请按如下所示将可执行文件名称放在引号中(包括强制虚拟引号)
START /wait "" "%~dp0\setup_01.exe" /SILENT /SP- /NORESTART
这是使用批量START
命令的常见问题。 请参阅如何使用带有空格的路径和命令的“start”在Windows中创建批处理文件