首頁 > web前端 > js教程 > 主體

這個 Windows 腳本並不是尋求幫助

Susan Sarandon
發布: 2024-11-09 04:05:02
原創
420 人瀏覽過

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 設定除外) ).

它無需管理員權限即可在普通 Windows 安裝上運行,儘管有些管理員停用 JScript。

如何...

0

那麼當任何字串都可以去那裡時為什麼要使用 /* 呢?因為這是 javascript/jscript 區塊註解的開始,而且 jscript 解譯器不需要嘗試解析 /* 和 */ 之間的批次腳本。那麼 jscript 解譯器如何看到這段程式碼呢?它從 0

我將跳過關閉回顯、設定變數和標籤循環,因為這些都是相當簡單的概念,儘管有趣的事實 - ECMAScript 也有標籤。

下一個重要的行是 CScript //nologo //E:JScript "%~F0" " {F15}",它將這個 .bat 檔案傳送到 CScript。 CScript 在命令列環境中啟動一個腳本,有多個腳本引擎選擇(本例中為 JScript)。 WScript 類似,但在 Windows GUI 中執行腳本,並且在此上下文中與批次檔中的最後一行並不完全相關。 $~F0 是目前運行的批次檔的完整路徑、檔案名稱和副檔名。 {F15} 是 Shift 鍵,F15 鍵是 SendKeys。重申一下,當發送此批次檔時,它會將整個批次腳本視為 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 是一種創建計時器的舊方法,它比睡眠和超時的處理器密集程度要低。您基本上會 ping 自己 %rand% 次,每次嘗試之間間隔 1 秒;上一行中的 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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板