Windowsでパスを指定した「start」とスペースを含むコマンドを使用してバッチファイルを作成する方法
-
09-06-2019 - |
質問
Windows .cmd ファイルで複数のコンソール アプリケーションを起動するバッチ ファイルを作成する必要があります。これは、start コマンドを使用して実行できます。
ただし、コマンドにはパスが含まれています。スペースを含むパラメータも渡す必要があります。これを行う方法?
例えば。バッチファイル
start "c:\path with spaces\app.exe" param1 "param with spaces"
解決
実際には、彼の例はうまくいきません(私も最初はうまくいくと思いましたが)。Start コマンドのヘルプに基づくと、最初のパラメータは新しく作成されたコマンド プロンプト ウィンドウの名前であり、2 番目と 3 番目はそれぞれアプリケーションへのパスとそのパラメータである必要があります。アプリへのパスの前に別の「」を追加すると、機能するはずです(少なくとも私の場合は機能しました)。次のようなものを使用します。
start "" "c:\path with spaces\app.exe" param1 "param with spaces"
最初の引数は、新しいコマンド プロンプトのタイトルに任意に変更できます。作成したアプリが Windows アプリの場合、コマンド プロンプトは表示されず、タイトルは関係ありません。
他のヒント
アポストロフィを使用してパスをエスケープするのは正しいですが、start コマンドは新しいウィンドウのタイトルを含むパラメータを受け取ります。このパラメータは周囲のアポストロフィによって検出されるため、アプリケーションは実行されません。
次のようなことを試してください。
start "Dummy Title" "c:\path with spaces\app.exe" param1 "param with spaces"
start "" "c:\path with spaces\app.exe" "C:\path parameter\param.exe"
上記の提案を使用すると、次のようになります。
「c:\path」は、内部コマンドまたは外部コマンド、操作可能なプログラム、またはバッチ ファイルとして認識されません。
2 番目の引用符がコマンドの実行を妨げていると思います。以下の解決策をいくつか検索した後、一日を節約できます。
start "" CALL "c:\path with spaces\app.exe" "C:\path parameter\param.exe"
興味深いことに、Windows Embedded Compact 7 ではタイトル文字列を指定できないようです。最初のパラメータはコマンドまたはプログラムでなければなりません。
次のようなものを使用します。
/d C:\Windows\System32\calc.exe を開始します
start /d "C:\Program Files\Mozilla
Firefox" Firefox.exe 起動 /d
「C:\プログラム ファイル\Microsoft
Office\Office12" EXCEL.EXE
また、特別なバッチ ファイル エディタを使用することをお勧めします。 バッチャー博士
例のように、パスと引数を引用符内のスペースで囲む必要があります。コマンドはパラメーターが渡されるときに引用符を処理する必要がある場合がありますが、通常は大した問題ではありません。
調査に成功し、うまく機能しています。私の要件は、Windowsのバッチファイルから呼び出す必要があるvbscriptを使用して電子メールを送信することです。これは私がエラーなく使用している正確なコマンドです。
START C:\Windows\System32\cscript.exe "C:\Documents and Settings\akapoor\Desktop\Mail.vbs"