web-dev-qa-db-ja.com

Windowsのコマンドプロンプトで2つのプログラムを同時に起動する方法

私はWindows764ビットを使用しています

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

@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プロンプトの両方を起動後に終了する必要があります。ここで何が問題なのですか?私は別のstackoverflowの答えをチェックアウトしました ここ しかしそれは私が使用しているのと同じ方法を参照しています。

編集:

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

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

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
23

startには、ウィンドウタイトルのパラメータが必要です。試してみてください:start "Lolrecorder" "C:\ Program Files(x86)\ LOLReplay\LOLRecorder.exe" start "Lol-Launcher" "G:\ League of Legends\lol.launcher.exe"

これにより、「Lolrecorder」と「Lol-Launcher」のタイトルで開始されたcmd-windowsが表示されます。

4
Michael

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

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

これ 参照 これまでのところ回答済み ほとんど 私がこれまでにCMDについて持っていたすべての質問。

2
gws

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

1
Kerrek SB

さまよっている人は、すべてのドライブの正確さを同時にチェックすることに興味があるかもしれません。そのための簡単な.batファイルを次に示します。

@echo off
for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%a:\ start cmd /c "echo %%a: & chkdsk %%a: & pause"

スクリプトは、各ドライブをチェックした後、キーを待ちます。各ドライブには独自のcmdウィンドウがあります。

1つのドライブが別のドライブ(VeraCryptコンテナー、VHD、VHDXなど)のコンテナーであるドライブのチェックと修正(上記はチェックのみ)は避けてください。

0
pbies