Windows XP 以降の Windows: ウィンドウを表示せずにバックグラウンドでバッチ ファイルを実行するにはどうすればよいですか? 質問する

Windows XP 以降の Windows: ウィンドウを表示せずにバックグラウンドでバッチ ファイルを実行するにはどうすればよいですか? 質問する

すでに同様の質問に答えたことは知っています(Windows の起動時にバックグラウンドでバッチ ファイルを実行する) ですが、今回はバッチを起動する必要があります。

  • 別のバッチから、
  • コンソールウィンドウが表示されず、
  • すべての引数付き目に見えないバッチに渡されます。

最初のバッチはコンソールウィンドウで実行されます。しかし、2番目のバッチ(最初のバッチによって起動された)は、非同期方式) をクリックすると、コンソール ウィンドウも表示されます。

私はまさにそれを実現するVBScriptスクリプトを思いつきました。そして、そのスクリプトを他の人が参照するための回答ただし、他のアイデアや解決策がある場合は、遠慮なく貢献してください。

注意: Windows コマンド プロセッサのコンソール ウィンドウは、多くの人によって、実際には正しい DOS ウィンドウとは呼ばれていません。


回答していただきありがとうございました。私が理解しているところによると、スクリプトを非同期的に呼び出して非表示モードで実行する必要がある場合は、次のようになります。

  • コンソールウィンドウに既にある2番目のスクリプトから、start /b十分です。
  • Windowsから、2番目のウィンドウをトリガーせずに私の解決策は今でも有効です。

ベストアンサー1

考えられる解決策は次のとおりです:

最初のスクリプトから、次の行を使用して 2 番目のスクリプトを呼び出します。

wscript.exe invis.vbs run.bat %*

実際には、次のように vbs スクリプトを呼び出します。

  • スクリプトの[パス]\名前
  • スクリプトに必要なその他のすべての引数 ( %*)

その後、invis.vbsはスクリプトを呼び出します。Windows Script Host の Run() メソッド、これには以下が含まれます:

  • intWindowStyle : 0 は「非表示のウィンドウ」を意味します
  • bWaitOnReturn : false は、最初のスクリプトが 2 番目のスクリプトの終了を待つ必要がないことを意味します。

invis.vbs は次のとおりです。

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False

おすすめ記事