ホームページ > ウェブフロントエンド > jsチュートリアル > この Windows スクリプトは助けを求めるものではありません

この Windows スクリプトは助けを求めるものではありません

Susan Sarandon
リリース: 2024-11-09 04:05:02
オリジナル
470 人が閲覧しました

This Windows script isn

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート