paramsを使用してバッチファイルを実行する正しい方法は何ですか?


1

バッチファイルがあります。ここで、パラメータを使用して新しいウィンドウで自分自身の別のコピーを開始する必要があります。私はコマンドを試しましたstart "" "%~0" "Param"が、それは言って'"Param"' is not recognized as an internal or external command, operable program or batch file.、何も始めませんでした。動作させる唯一の方法はでしたがstart %~0 Param、パスにスペースが含まれているとクラッシュすることがわかりました。では、現在のバッチファイルの別のインスタンスをパラメーターで開始する正しい方法は何ですか?


別の追加インスタンスを意味し、現在の実行を継続しますか?
LotPings

回答:


2

次のような2番目のcmdシェルを開始します。

start "" Cmd.exe %~0 parameters

バッチファイルの各反復に独自のコマンドシェルを与えるだけです。


OPによる注意:私は次のことをしなければなりませんでした:

start cmd.exe /C %~0 parameters

まさに私が探していたもの、なぜ私はそれを考えなかったのか分からない。ありがとうございました!!
マークデベン

実際、これは私にとってはうまくいきません。私は始めなければなりませんcmd.exe /C %~0 parameters
でした

1

バッチファイルから別のバッチファイルを呼び出すにはcall "name of script.bat"、「start "name of script.bat"」を使用するか、

なしでも実行できますが、継続的に自分自身を呼び出すため、予期しない結果が発生します。

技術的には、あなたは書くことができます

%0 MyParam

1

無限ループを回避するには、引数が存在するかどうかを確認します。

:: Q:\Test\2019\01\25\SU_1298393.cmd
@Echo off
If "%~1" neq "" goto :HasArgs
Echo restart with parms
"%~0" "parms"

:HasArgs
Echo %0 started with %*
Pause
Exit /B

サンプル実行:

> SU_1298393.cmd
restart with parms
"SU_1298393.cmd" started with "parms"
Press any key to continue . . .

> SU_1298393.cmd foo bar
SU_1298393.cmd started with foo bar
Press any key to continue . . .

それは特定の場合のみですが、ありがとうございます!
マークデベン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.