17

Windows7 64ビットを使用しています

これが私が開始するために使用しているコードスニペットです

@echo off
call "C:\Program Files (x86)\LOLReplay\LOLRecorder.exe"
call "G:\League of Legends\lol.launcher.exe"
exit

しかし、LOLRecorder.exeを閉じない限り、lol.launcher.exeは起動しません....基本的に、起動後に実行とcmdプロンプトの両方を終了したいです。ここで何が問題なのですか?ここで別のスタックオーバーフローの回答をチェックアウトしましたが、それは私が使用しているのと同じ方法を指しています。

編集:

start コマンドを使用すると、2 つのターミナル ウィンドウが起動するだけで、何も起動しません。

@echo off
start "C:\Program Files (x86)\LOLReplay\LOLRecorder.exe"
start "G:\League of Legends\lol.launcher.exe"
exit
4

5 に答える 5

24

startコマンドを使用すると、2つのターミナルウィンドウが起動するだけで、何も起動しません。

問題は引用符です(パスにスペースがあるため、残念ながら引用符が必要です)。コマンドはそれらstartを気に入らないようです。

これを回避するには、すべてのディレクトリに短いDOS名を使用する(および引用符を削除する)か、ディレクトリを個別に指定して引用符で囲みます(startコマンドで処理できるようです)。

これを試して:

@echo off
start /d "C:\Program Files (x86)\LOLReplay" LOLRecorder.exe
start /d "G:\League of Legends" lol.launcher.exe

または、バッチファイルが将来さらに複雑になる場合、またはプログラム名にスペースが含まれている場合は、次のようにします。

@ECHO OFF

CALL :MainScript
GOTO :EOF

:MainScript
  CALL :RunProgramAsync "C:\Program Files (x86)\LOLReplay\LOLRecorder.exe"
  CALL :RunProgramAsync "G:\League of Legends\lol.launcher.exe"
GOTO :EOF

:RunProgramAsync
  REM ~sI expands the variable to contain short DOS names only
  start %~s1
GOTO :EOF
于 2011-06-27T01:55:11.743 に答える
2

タイトルと /c スイッチを指定して、コマンドの終了後に STARTed ウィンドウを閉じるように指示します。

start "recorder" /c "C:\Program Files (x86)\LOLReplay\LOLRecorder.exe"
start "LOL" /c "G:\League of Legends\lol.launcher.exe"

このリファレンスは、 CMD について私がこれまでに経験したほとんどすべての質問に答えています。

于 2014-03-21T14:53:20.170 に答える
1

callバッチ ファイル専用で、呼び出し先が戻るのを待ちます。startコマンドを使用して、プログラムをバックグラウンドで開始する必要があります。追加のボーナスとして、プロセスの優先度を指定できます。別のユーザーとして何かを実行する必要がある場合は、runas.

于 2011-06-27T01:14:25.593 に答える