web-dev-qa-db-ja.com

Windows 8のタスクスケジューラで最小化されたバッチファイルを開始する方法-Windows 7以降、%comspec%メソッドが機能しなくなりました

Windows XPの後、私は常に以下のトリックを使用して、Windowsタスクマネージャーで最小化されたバッチファイルを開始します。

http://www.pcreview.co.uk/forums/running-bat-files-minimized-scheduler-t2125918.html

「前提条件:すべてのバッチファイルには、アクションを終了するexitコマンドがあります。終了しない場合は、コマンドプロンプトが点滅して終了します。

これは私が使用し続けているものです:

%comspec% /c start /min "C:\Scripts\Destination_inbound_ftp5.bat"

これをプロパティに保存すると、これらすべてがパラメーターであるかどうかを尋ねるダイアログが表示されます。いいえと答えると、タスクは期待どおりに保存されます。

スタックオーバーフローの質問「start%comspec%/ c script.cmd」vs「start cmd/C second.cmd script.cmd」、 "%comspec%"ステートメントを "C:\ Windows\system32\cmd.exe"に置き換えましたが、それでも何も変わりませんでした。

問題は、最小化された実行中のbatファイルの代わりに、最小化されたコマンドプロンプトだけになりますが、バッチコマンドは実行されないことです。タスクスケジューラのステータスは「実行中」のままです:(

Windows 8(64ビット)でこれを行うにはどうすればよいですか? PowerShellの代わりに旧式のバッチコマンドで好む(またはもっと悪い; p)

32
user225479

開始コマンドには、タイトル機能を無効にするために、先頭の""引用符が必要です。これをスケジュールしてみてください:

%comspec% /c start "" /min "C:\Scripts\Destination_inbound_ftp5.bat"
23
foxidrive

Windows 8がWindows 7と同じであると仮定すると、「終了」はバッチファイルを終了するだけです(とにかくこれを行います)。

次のような終了コードを追加する必要があります。

「プログラム/スクリプト」の下:

CMD(またはcommand.exe、または%comspec%)

「引数:

/c start "Title" /min "C:\Scripts\Destination_inbound_ftp5.bat" ^& exit
10
RationalRabbit

コマンドウィンドウがポップアップして消えてしまうのが気に入らなかったので、 https://ss64.com/vb/run.html ...

最初に作成invisible.vbs次の1行のテキスト:

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

次に、最後に、次の方法でcmdまたはバッチファイルを起動します。

%SystemRoot%\system32\wscript.exe "invisible.vbs" "myscript.cmd" //nologo

タダ!この種のスクリプトは長い間Windowsに組み込まれてきました。興味がある場合は、「WSH」(Windowsスクリプトホスト)をWeb検索してください。このようなスクリプトは、JScriptと呼ばれるJavaScriptの方言で作成することもできます。

5

別の可能性: [〜#〜] cmdh [〜#〜] という名前の小さなフリーウェアプログラムは、単にバックグラウンドで要求された注文を実行します。例えば:

cmdh MyScript.cmd

スクリプトに「終了」を追加する必要はありません。 Windowsでの動作テスト済みXPSP3。Windows8で失敗する理由はありません。

おそらくあなたと同じではないかもしれませんが、スケジューラで.batファイルを実行し、タスクプロパティの[全般]タブでこの[非表示]ボックスをオンにすると、縮小が開始されます。

enter image description here

2
Flion

https://ss64.com/vb/run.html からのソリューションは、最小化されたウィンドウでバッチファイルを実行します。 startコマンドと/minを使用する他のソリューションとは異なり、これは画面に新しいウィンドウをフラッシュしたり、フォーカスを盗んだり、フルスクリーンアクティビティを中断したりしません。

まず、次の1行のテキストでrun_minimized.vbsという名前のファイルを作成します。

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 2, False

次に、これらの引数を使用してプログラムwscript.exeを開始するアクションを持つタスクスケジューラタスクを作成します。

"c:\path\run_minimized.vbs" "c:\path\my script.bat"

必要に応じてパスを変更して、2つのファイルの場所を指定します。

Wscriptは引数から引用符を削除するため、スペースと引用符を保持しながら、タスクスケジューラからバッチファイルに引数を渡す簡単な方法はありません。スペースを含む引数を処理する最も簡単な方法は、バッチファイルコマンド全体をvbsに入れることです。

CreateObject("Wscript.Shell").Run  """c:\path\my script.bat"" ""arg 1"" arg2", 2, False

引用符の使用に注意してください。コマンド文字列全体を囲む1組の引用符"と、コマンドラインで通常の引用符を使用するすべての場所に隣接する1組の隣接する引用符""があります。

2
balazer