2016-07-29 1 views
3

私は私の問題を説明しようとします:異なるディレクトリから他のバッチファイル内のバッチファイルからexeファイルを起動するにはどうすればよいですか?

  • 私はmaster.bat
  • という名前のメインのバッチファイルを、持っている私は、CALLコマンドでmaster.batから呼び出さslave_0x.batという名前のいくつかのバッチファイルを、持っています。
  • 各slave_0x.batファイルは、相対ディレクトリからsetup_0x.exeファイルを起動します。
  • これら2つのファイルは、master.batディレクトリのサブディレクトリにあります。

    • master.batファイルをDに位置しています:
    • slave_01.bat \ \マスターがDに位置しています:
    • setup_01.exeがある\マスター\ Slave_01 \たとえばパー

    また、Dにあります:\マスター\ Slave_01 \

問題がある:

とき私はmaster.batを起動し、現在のパスは「D:\ Master \」 それから、slave_01.batが実行されると、「D:\ Master」からではなく「D:\ Master」からsetup_01.exeを起動しようとします\スレーブ\」

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でmaster.batファイルからではなくslave_0x.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

関連する問題