これが私の状況です:
- 実行に時間がかかる(1分から70分)BATファイルがあります
- Windowsスケジューラで10分ごとに実行するようにスケジュールします
- 実行中に再度スケジュールを設定しても、何も起こりません(これは良いことです)
私の問題は、BATをサイレントに実行する必要があることですが、そうではありません。だから、私は次のようなWindowsスクリプトでそれを起動したいと思います:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0
Set WshShell = Nothing
残念ながら、このスクリプトをスケジュールすると、ジョブは実行されますがすぐに戻ります。これにより、Windowsスケジューラは、実際にはBATがどこかで単独で実行されているときにタスクが終了したと見なします。
このため、Windowsは10分後にジョブを再度スケジュールし、複数回実行します。
必要なもの:
進行/終了する前に.Runコマンドのターゲットが完了するのを待つようにWindowsスクリプトファイルに指示する方法はありますか?基本的に、別のスレッドを起動してからそのスレッドでjoinを呼び出したように動作させたいので、BATと同じように動作しますが、コンソールウィンドウは表示されません。
その他のソリューション
このBATをサイレントに実行する他の方法(PowerShellコマンドなど)を教えてください。ソリューションとしても受け入れます。その周りのC++/ C#アプリケーションについて完全に書くように私に言わないでください、それはやり過ぎです:)
実行中: Windows Server 2008 R2