0< /* :: @echo off set /a min = 15 set /a max = 45 :loop CScript //nologo //E:JScript "%~F0" "+{F15}" set /a rand = (%RANDOM% * (%max% - %min% + 1) / 32768) + %min% + 1 ping -n %rand% -w 1 127.0.0.1 > NUL goto :loop */ 0; WScript.CreateObject("WScript.Shell").SendKeys(WScript.Arguments(0));
少し時間をとって、ここで何が起こっているのか理解できるかどうかを確認してください。
続けてください。 15 ~ 45 秒待ってから、Shift F15 キーの組み合わせを送信します。
F15 キーは存在しますが、ほとんどのキーボードにはもう存在しないため、Shift F15 キーを押しても、一般にキーの組み合わせが押されたこと以外には何も実行されず、ほとんどの場合、コンピューターがスリープできなくなります (一部の VDI セットアップを除く)。 ).
管理者によっては JScript を無効にしている場合もありますが、管理者権限がなくても標準の Windows インストールで動作します。
0
では、どのような文字列でも使用できるのに、なぜ /* を使用するのでしょうか?これは javascript/jscript ブロック コメントの始まりであり、jscript インタープリターは /* と */ の間のバッチ スクリプトを解析する必要がないからです。しかし、では、jscript インタプリタはこのコードの塊をどのように認識するのでしょうか?ブロック全体を 0
エコーのオフ、変数の設定、およびラベルのループについては、非常に単純な概念なので省略します。ただし、興味深い事実 - ECMAScript にもラベルがあります。
次の重要な行は CScript //nologo //E:JScript "%~F0" " {F15}" で、この .bat ファイルを CScript に送信します。 CScript は、いくつかのスクリプト エンジン (この場合は JScript) を選択して、コマンド ライン環境でスクリプトを開始します。 WScript も似ていますが、Windows GUI でスクリプトを実行し、このコンテキストではバッチ ファイルの最後の行と完全には関連していません。 $~F0 は、現在実行中のバッチ ファイルのフル パス、ファイル名、および拡張子です。 {F15} は Shift および SendKeys の F15 キーです。繰り返しになりますが、このバッチ ファイルが送信されると、バッチ スクリプト全体が 0
set /a rand = (%RANDOM% * (%max% - %min% 1) / 32768) %min% 1 で唯一興味深い点は、%RANDOM% が整数を生成する組み込み変数であることです。 0 ~ 32767 (両端の値を含む) の場合、set /a を使用すると常に切り捨てられ、最後の 1 は特に次の行に使用されます。スリープまたはタイムアウトを使用する場合は、余分な 1 を追加しません。
次の行 ping -n %rand% -w 1 127.0.0.1 > NUL は、スリープやタイムアウトよりもプロセッサの負荷が低いタイマーを作成する古い方法です。基本的に、各試行の間に 1 秒の間隔をあけて、%rand% 回自分自身に ping を送信します。前の行の 1 は、最初の ping の前に待機がないためです。 > NUL は標準出力を NUL にリダイレクトしますが、もちろんそれは単に破棄されます。
このスクリプトに無限ループがない場合は、 */ 0; の前に goto :eof を追加する必要があります。バッチ スクリプトが有効なスクリプトではないファイルの残りの部分をスキップするようにします。
そして、最終的に実際の JScript である WScript.CreateObject("WScript.Shell").SendKeys(WScript.Arguments(0)); に到達します。 JScript は JavaScript 1.5/ECMAScript3 とほぼ同等で、VBScript にほぼ類似した WScript API を備えています。
おそらくこのようにはしないでしょう。しかし、そうしたいかもしれません。今では、その一部が理解できるようになりました。
以上がこの Windows スクリプトは助けを求めるものではありませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。