0

基本的に、2 つのバッチ ファイルがあります。1 つは「ラッパー」であり、別のバッチ ファイルを呼び出して/min(最小化) として開始します。このバッチ ファイルは、2 番目のバッチ ファイルを起動すると終了します。

これには、閉じた後も RDP セッションを生成し続けるループが含まれています。

問題は、ユーザーが ALT-TAB を押してバッチを閉じると、空のデスクトップが残ることです (エクスプローラーを強制終了するため)。そのバッチ ループが終了した場合、マシンを強制的に再起動する方法はありますか?

ありがとう!

4

2 に答える 2

0

標準の cmd コマンドがあります。

shutdown /r
使用法: シャットダウン [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/ハイブリッド] [/f]
    [/m \\コンピューター][/t xxx][/d [p|u:]xx:yy [/c "コメント"]]

    引数なし ヘルプを表示します。これは /? と入力するのと同じです。
    /? ヘルプを表示します。これは、オプションを入力しないのと同じです。
    /i グラフィカル ユーザー インターフェイス (GUI) を表示します。
               これは最初のオプションでなければなりません。
    /l ログオフします。これは /m または /d オプションでは使用できません。
    /s コンピューターをシャットダウンします。
    /r コンピュータを完全にシャットダウンして再起動します。
    /g コンピュータを完全にシャットダウンして再起動します。システムが
               再起動したら、登録済みのアプリケーションを再起動します。
    /a システムのシャットダウンを中止します。
               タイムアウト期間中のみ使用できます。
    /p タイムアウトや警告なしでローカル コンピュータの電源を切ります。
               /d および /f オプションと共に使用できます。
    /h ローカル コンピューターを休止状態にします。
               /f オプションで使用できます。
    /hybrid コンピューターのシャットダウンを実行し、高速スタートアップの準備をします。
               /s オプションと共に使用する必要があります。
    /e コンピュータの予期しないシャットダウンの理由を文書化します。
    /o 詳細ブート オプション メニューに移動し、コンピューターを再起動します。
               /r オプションと共に使用する必要があります。
    /m \\computer 対象のコンピューターを指定します。
    /t xxx シャットダウンまでのタイムアウト時間を xxx 秒に設定します。
               有効な範囲は 0 ~ 315360000 (10 年) で、デフォルトは 30 です。
               タイムアウト期間が 0 より大きい場合、/f パラメータは
               暗示。
    /c "comment" 再起動またはシャットダウンの理由についてコメントします。
               最大 512 文字まで使用できます。
    /f ユーザーに警告せずに、実行中のアプリケーションを強制的に終了します。
               /f パラメータは、0 より大きい値が指定されている場合に暗黙的に指定されます。
               /t パラメータに指定されています。
    /d [p|u:]xx:yy 再起動またはシャットダウンの理由を提供します。
               p は、再起動またはシャットダウンが計画されていることを示します。
               u は、理由がユーザー定義であることを示します。
               p も u も指定されていない場合、再起動またはシャットダウンは
               無計画。
               xx は主な理由番号 (256 未満の正の整数) です。
               yy はマイナー理由番号 (65536 未満の正の整数) です。
于 2013-09-04T21:37:12.170 に答える
0

私の提案:

バッチを表示 (最小化) する必要がありますか、それとも非表示にすることができますか?

非表示にできる場合は、VBScript を使用して非表示で起動します。

With CreateObject("W"&"Script.Shell")
    .Run "LongRun.bat", 0
End With

本当にバッチを表示する必要がある場合は、バッチが終了して再起動するのを待つ隠しスクリプトを作成できます。

ステップ 1: 非表示のスクリプトを起動 ( Start.vbs):

Set WsShell = CreateObject("W"&"Script.Shell")
WsShell.Run "Hidden.vbs", 0

ステップ 2:Hidden.vbsバッチを起動し、それが戻るのを待ちます。

'This script is supposed to start hidden!
Set WsShell = CreateObject("W"&"Script.Shell")
WsShell.Run "LongRun.bat", 7, True
'WsShell.Run "REBOOT.EXE ..." 'Must remove comment and complete command line
MsgBox "Rebooting..."

現在LongRun.batも実行中ですHidden.vbs(ただし、表示されません)。

何らかの理由LongRun.batで終了した場合Hidden.vbsは、実行を継続して再起動します。

( WScript.Shell.Runドキュメント)

編集:通知"W"&"Script.Shell"は同じです"WScript.Shell"が、StackOverflow では書き込みが許可されていません!

于 2013-09-26T12:42:07.653 に答える