2016-07-29 22 views
3

我會盡力解釋我的問題:如何從不同目錄的其他批處理文件中的批處理文件啓動一個exe文件?

  • 我有一個主要的批處理文件,命名爲master.bat
  • 我有幾個批處理文件,命名爲slave_0x.bat從與CALL指令master.bat調用。
  • 每個slave_0x.bat文件從相對目錄啓動setup_0x.exe文件。
  • 這兩個文件位於master.bat目錄的子目錄中。

每例如:

  • master.bat文件位於d:\萬事達\
  • slave_01.bat位於d:\萬事達\ Slave_01 \
  • setup_01.exe是同樣位於d:\主\ Slave_01 \

的問題是:

當我啓動master.bat,當前路徑是「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的master.bat文件的當前目錄的方式。蝙蝠從正確的目錄啓動setup_0x.exe文件?

問候

回答

3

要啓動的可執行即在不同的目錄中,相對路徑添加到START命令。使用%~dp0獲取當前正在運行的批處理文件的路徑。

START /wait %~dp0\setup_01.exe /SILENT /SP- /NORESTART 

這將啓動可執行文件,但不會更改進程當前目錄。

如果您的可執行文件依賴於當前目錄,那麼您首先需要將cd指向該目錄。臨時更改目錄的最簡單方法是pushdpopd

pushd %~dp0 
START /wait setup_01.exe /SILENT /SP- /NORESTART 
popd 

注意:如果路徑或可執行文件名稱可以包含空格,把可執行文件名在引號如下(包括強制虛擬引號)

START /wait "" "%~dp0\setup_01.exe" /SILENT /SP- /NORESTART 

這是使用一個常見的問題批次START命令。見How to create batch file in Windows using "start" with a path and command with spaces

相關問題