6.1 批量修改文件名
在第4.2.2節(jié)中,我們已經(jīng)會(huì)使用循環(huán)命令對大量文件改名進(jìn)行批量處理。但總結(jié)一下,該批處理并不是很健壯。判斷一個(gè)程序的好壞,往往不是站在程序員的角度,而從用戶的角度出發(fā)。比如:在用戶使用它的時(shí)候,如果輸入了不正確的路徑格式怎么辦?如果輸入了含有非法符號(hào)的前綴怎么辦?輸入的擴(kuò)展名也有問題怎么辦?改完名后看不到是否執(zhí)行成功的反饋信息,等等。帶著這些想法,我們將原程序再次修改一下。
:::::::批量修改文件名.bat:::::::
@echo off
title 批量修改文件名
setlocal EnableDelayedExpansion
:: 啟用延遲變量擴(kuò)充
:GetPath
set zpath=%CD%
:: 對變量進(jìn)行初始化,防止用戶不輸入而直接跳過。其中%CD%表示當(dāng)前路徑
set /p zpath=請輸入目標(biāo)文件所在的路徑:
if %zpath:~0,1%%zpath:~-1%=="" set zpath=%zpath:~1,-1%
:: 檢查變量 zpath 的第一個(gè)和最后一個(gè)字符是否為 "" ,是的話就去掉
if not exist "%zpath%" goto :GetPath
:: 如果 zpath 值的路徑不存在,就得跳轉(zhuǎn)回去,要求重新輸入
:GetPrefix
set prefix=未命名
set /p prefix=請輸入文件名前綴(不能包含以下字符\/:*?"<>|):
for /f "delims=\/:*?<>| tokens=2" %%i in ("z%prefix%z") do goto :GetPrefix
:: 這里對變量 perfix 進(jìn)行檢查,發(fā)現(xiàn)有非法符號(hào)便跳轉(zhuǎn)到 :GetPrefix
:: 事實(shí)上,這里并沒有對雙引號(hào) " 進(jìn)行檢測,因?yàn)殡p引號(hào)無法在此被轉(zhuǎn)義為可用的分隔符
:: 即使是在這個(gè)程序里,不正確地使用雙引號(hào)也會(huì)引起程序異常而退出。
:: 因此,想把它做的非常人性化并不是一件容易的事情
:GetExt
set ext=.*
set /p ext=請輸入文件的擴(kuò)展名(不輸入則表示所有類型):
if not "%ext:~0,1%"=="." set ext=.%ext%
:: 檢查變量 ext 的第一個(gè)是否為句點(diǎn) . ,不是的話就加上
:: 建議這里對變量 ext 也檢查一下,發(fā)現(xiàn)有除*外的非法符號(hào)便跳轉(zhuǎn)到 :GetExt
set answer=N
echo.
echo 您試圖將 %zpath%\ 里的所有 %ext% 類型的文件以 %prefix% 為前綴名進(jìn)行批量改名,是否繼續(xù)?
set /p answer=繼續(xù)請輸入 Y ,輸入其它鍵放棄...
if "%answer%"=="Y" goto :ReadyToRename
if "%answer%"=="y" goto :ReadyToRename
echo 放棄文件改名,按任意鍵退出... & goto :PauseThenQuit
:ReadyToRename
set /a num=0
echo.
if "%ext%"==".*" (
for %%i in ("%zpath%\*%ext%") do (
set /a num+=1
ren "%%i" "%prefix%!num!%%~xi" || echo 文件 %%i 改名失敗 && set /a num-=1
)
) else (
for %%i in ("%zpath%\*%ext%") do (
set /a num+=1
ren "%%i" "%prefix%!num!%ext%" || echo 文件 %%i 改名失敗 && set /a num-=1
)
)
if %num%==0 echo %zpath%\ 里未發(fā)現(xiàn)任何文件。按任意鍵退出... & goto :PauseThenQuit
echo 文件改名完成,按任意鍵退出...
:PauseThenQuit
pause>nul
::::::::::::::::::::::::::::::::
圖6-1 批量改文件名.bat 的運(yùn)行結(jié)果
相對第4.2.2節(jié)里的批量修改文件的批處理來說,已經(jīng)全面多了。不過這仍然有許多地方需要進(jìn)一步完善,比如,輸出的文件名編號(hào)可以用001、002、003這樣的方式來表達(dá),以便瀏覽器在以文件名排列文件時(shí)能按我們或需要的順序進(jìn)行排列。[創(chuàng)作日期:2007-12-13]
========================================樸實(shí)的分割線========================================
6.2 批量備份進(jìn)程映像列表以及注冊表自啟動(dòng)項(xiàng)
什么是備份;為什么要備份;怎么去備份;備份些什么,說起來我們可能會(huì)更關(guān)心這些問題。
什么是備份:將某事物復(fù)制出額外一份完全一樣的事物,并妥善保存起來的過程;
為啥要備份:當(dāng)原事物出現(xiàn)異?;驘o法使用的時(shí)候,取出復(fù)制品并代替原來無法使用的事物;
怎么去備份:復(fù)制,與原事物完全一樣地去復(fù)制,然后保存到安全的地方;
備份些什么:系統(tǒng)、文檔、數(shù)據(jù)庫、工程、記錄、進(jìn)度等等。
不過,這些都不是本文的主旨。
本節(jié)的寫作起因是從《利用Windows系統(tǒng)自帶命令手工搞定病毒》這篇文章開始的。這篇文章的主旨是:用 tasklist 備份好進(jìn)程列表→通過 fc 比較文件找出病毒→用 netstat 判斷進(jìn)程→用 ntsd 終止進(jìn)程→搜索找出病毒以及同伙文件并刪除→用 reg 命令修復(fù)注冊表。
不過,這些也不是本文的主旨。
在前面提到的《手工殺毒》一文中,第二步提到:如果感覺機(jī)器異常,可以將現(xiàn)有的進(jìn)程與以前機(jī)器正常時(shí)的進(jìn)程加以對比,看看是否多出了可疑的進(jìn)程。這就意味著您必須得記憶或保留住以前正常時(shí)的進(jìn)程映像名,即備份。備份時(shí)正如《手工殺毒》中所說的,在系統(tǒng)正常且剛進(jìn)入Windows的時(shí)候就做一個(gè)進(jìn)程映像名列表的備份。查看機(jī)器當(dāng)前的進(jìn)程可以通過組合鍵 Ctrl+Alt+Del 召喚出"Windows 任務(wù)管理器",然后切換到"進(jìn)程"頁即可。對于如何記錄下當(dāng)前的這些進(jìn)程,您可以用 PrintScreen 鍵抓圖(Alt+PrintScreen 可以僅抓取當(dāng)前窗口的圖)并以圖片的形式保存,當(dāng)然,您甚至可以簡單地將這些映像名抄到一張紙上。本文所提供的方法要比抓圖或是手抄的方法更先進(jìn)一些,至少是更嚴(yán)肅了一些。
除了 Windows 任務(wù)管理器 以外,使用命令 tasklist 也可以看到(詳細(xì)信息請參閱 tasklist/?)當(dāng)前進(jìn)程。tasklist>進(jìn)程.txt 即可將進(jìn)程以表格的形式輸出到一個(gè)文本文件中。在輸出結(jié)果中除了進(jìn)程映像名以外,還有 PID 、會(huì)話、內(nèi)存使用等信息,但后面的這些信息并不總是固定的,因此我們也并不需要這些。我們所關(guān)心的只是一個(gè)按照字母順序排列的進(jìn)程映像名清單,以便今后進(jìn)行比較。
::::::備份進(jìn)程和自啟動(dòng).bat::::::
@echo off
set TempFolder=臨時(shí)文件夾
:: 設(shè)置臨時(shí)文件夾的名稱
if not exist %TempFolder% md %TempFolder%
:: 創(chuàng)建臨時(shí)文件夾
echo.>%TempFolder%\temp.tmp
:: 在臨時(shí)文件夾里創(chuàng)建一個(gè)臨時(shí)文件 temp.tmp ,并清空其內(nèi)容
set ExportImageName=%cd%\進(jìn)程映像列表%date:~0,10%.txt
:: 設(shè)置默認(rèn)導(dǎo)出文件的路徑以及文件名
set /p ExportImageName=所要導(dǎo)出的進(jìn)程映像名稱列表備份文件名:
:: 用戶自定義輸入的路徑文件名
for /f "delims=," %%i in ('tasklist /nh /fo csv') do echo %%~i>>%TempFolder%\temp.tmp
:: 將 tasklist 中的進(jìn)程映像名輸出到臨時(shí)文件 temp.tmp 中 [注1]
sort %TempFolder%\temp.tmp>"%ExportImageName%"
:: 將進(jìn)程映像名按字母順序排列
del %TempFolder%\temp.tmp
:: 刪除臨時(shí)文件夾里的文件 temp.tmp
echo 當(dāng)前進(jìn)程中的所有映像名已導(dǎo)出到以下文件:%ExportImageName%
pause
:::::::: 以上完成了進(jìn)程備份,下面開始備份自啟動(dòng)的注冊表信息
set ExportRegRunName=%cd%\注冊表自啟動(dòng)%date:~0,10%.txt
:: 設(shè)置默認(rèn)導(dǎo)出文件的路徑以及文件名
set /p ExportRegRunName=所要導(dǎo)出的注冊表自啟動(dòng)備份文件名:
:: 用戶自定義輸入的路徑文件名
reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run %TempFolder%\HKLMrun.reg
reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run %TempFolder%\HKLMexp.reg
reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run %TempFolder%\HKCUrun.reg
reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run %TempFolder%\HKCUexp.reg
:: 將相關(guān)的注冊表信息導(dǎo)出到各個(gè)臨時(shí)的注冊表文件中 [注2]
copy %TempFolder%\*.reg "%ExportRegRunName%">nul
:: 將臨時(shí)文件夾里所有的注冊表文件合并復(fù)制到一個(gè)文件中
del %TempFolder%\*.reg
:: 刪除臨時(shí)文件夾里所有的臨時(shí)注冊表文件
if exist %TempFolder% rd %TempFolder%
:: 刪除臨時(shí)文件夾
echo 當(dāng)前自啟動(dòng)的注冊表信息已導(dǎo)出到以下文件:%ExportRegRunName%
pause
::::::::::::::::::::::::::::::::
注1. tasklist /nh /fo csv 中參數(shù) /nh 表示不輸出欄標(biāo)頭,參數(shù) /fo csv 表示以雙引號(hào)包含字符串,并用逗號(hào)分隔各個(gè)字符串。for /f "delims=," %%i in ('tasklist /nh /fo csv') do echo %%~i>>a.txt 表示在無欄標(biāo)頭且以 csv 格式輸出的 tasklist 結(jié)果中,以逗號(hào)為分隔符,將每行的首字符串依次輸出到文本文件 a.txt 中。
注2. reg export 能將注冊表指定項(xiàng)的所有子項(xiàng)和值導(dǎo)出到指定的文件中(請參閱 reg/? 與 reg export /?)。當(dāng)然,以上4個(gè)只是常見的自啟動(dòng)鍵值,病毒或木馬所在注冊表中添加或修改的項(xiàng)不僅此而已,更多需要備份的項(xiàng)可用類似的方法自行添加。
對于查找可以進(jìn)程的方法,與前文 5.2.1 小節(jié)中所提到的對比系統(tǒng)文件夾找差異的過程類似,使用命令 fc 對比兩個(gè)不同時(shí)期的進(jìn)程映像名列表,找出多余的可疑進(jìn)程(如果您無法確定某個(gè)進(jìn)程是干什么用的或者是否存在安全風(fēng)險(xiǎn),可以先到網(wǎng)上搜索并了解一下,比如:進(jìn)程知識(shí)庫)。至于是用 taskkill 還是 ntsd 來終止可以的進(jìn)程,怎樣用屬性加時(shí)間來查找并鎖定可以的文件,以及 reg import 注冊表導(dǎo)入恢復(fù)的用法,這些仍然不是本文的重點(diǎn)。[創(chuàng)作日期:2008-01-08]
========================================樸實(shí)的分割線========================================
6.3 批量查看同一子網(wǎng)絡(luò)下的所有IP在線情況[編輯中]
本小節(jié)的批處理可以讓您知道自己所在局域網(wǎng)的同一網(wǎng)段下都有哪些IP被使用了。不得不承認(rèn),我在創(chuàng)造這個(gè)批處理的時(shí)候想法很奇怪,甚至有些愚蠢。
:::::::查看所有子網(wǎng)IP.bat:::::::
@echo off
title 查看所有子網(wǎng)IP
set /a Online=0
set /a Offline=0
set /a Total=256
set ExportFile=子網(wǎng)IP在線統(tǒng)計(jì).txt
:: 初始化在線IP與不在線IP的個(gè)數(shù)為零,共掃描256個(gè)IP,結(jié)果輸出的文件名
set StartTime=%time%
:: 記錄程序的開始時(shí)間
for /f "delims=: tokens=2" %%i in ('ipconfig /all ^| find /i "IP Address"') do set IP=%%i
:: 獲得本機(jī)IP [注1]
if "%IP%"=="" echo 未連接到網(wǎng)絡(luò) & pause & goto :EOF
if "%IP%"==" 0.0.0.0" echo 未連接到網(wǎng)絡(luò) & pause & goto :EOF
:: 當(dāng)IP為空或 0.0.0.0 時(shí),提示未連接并退出該程序
for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do (
set /a IP1=%%i
set /a IP2=%%j
set /a IP3=%%k
set /a IP4=%%l
)
:: 以句點(diǎn)為分隔符,分別將IP的四個(gè)十進(jìn)制數(shù)賦給四個(gè)變量
set /a IP4=0
echo 在線的IP:>%ExportFile%
:: 初始化IP的第四個(gè)數(shù)值為零,并創(chuàng)建結(jié)果輸出文件
:RETRY
ping %IP1%.%IP2%.%IP3%.%IP4% -n 1 -w 200 -l 16>nul && set /a Online+=1 && echo %IP1%.%IP2%.%IP3%.%IP4%>>%ExportFile% || set /a Offline+=1
:: ping 目標(biāo)IP [注2]
set /p =[將本文底部評(píng)論4中的退格符替換到此處]<nul
set /a Scanned=%Online%+%Offline%
set /a Progress=(%Online%+%Offline%)*100/%Total%
set /p =正在掃描:%Scanned%/%Total% 掃描進(jìn)度:%Progress%%%<nul
:: 刪除當(dāng)前行的內(nèi)容,并重新顯示進(jìn)度信息 [注3]
set /a IP4+=1
if %IP4% lss %Total% goto :RETRY
:: 當(dāng)IP的第四個(gè)數(shù)值小于總數(shù)時(shí),跳轉(zhuǎn)回 :RETRY 處,重復(fù)執(zhí)行直到全部 ping 完為止
echo.
echo.
set EndTime=%time%
:: 記錄程序的結(jié)束時(shí)間
set /a Seconds = %EndTime:~6,2% - %StartTime:~6,2%
set /a Minutes = %EndTime:~3,2% - %StartTime:~3,2%
if %Seconds% lss 0 set /a Seconds += 60 & set /a Minutes -= 1
if %Minutes% lss 0 set /a Minutes += 60
:: 計(jì)算時(shí)間差
set /a Percent=%Online%*100/(%Online%+%Offline%)
:: 計(jì)算在線百分比
echo 在線IP個(gè)數(shù): %Online%
echo 不在線IP個(gè)數(shù): %Offline%
echo 在線百分比: %Percent%%%
echo 統(tǒng)計(jì)耗時(shí): %Minutes%分%Seconds%秒
echo 統(tǒng)計(jì)日期: %date% %time:~0,-3%
echo.>>%ExportFile%
echo 在線IP個(gè)數(shù): %Online%>>%ExportFile%
echo 不在線IP個(gè)數(shù): %Offline%>>%ExportFile%
echo 在線百分比: %Percent%%%>>%ExportFile%
echo 統(tǒng)計(jì)耗時(shí): %Minutes%分%Seconds%秒>>%ExportFile%
echo 統(tǒng)計(jì)日期: %date% %time:~0,-3%>>%ExportFile%
echo 記錄已保存到文件"%ExportFile%"中
::顯示結(jié)果并將結(jié)果保存到文件中
pause
::::::::::::::::::::::::::::::::
注1. ipconfig 是內(nèi)置于 Windows 的 TCP/IP 應(yīng)用程序,用于顯示本地計(jì)算機(jī)網(wǎng)絡(luò)適配器的物理地址和IP地址等配制信息,這些信息一般用來檢驗(yàn)手動(dòng)配置的 TCP/IP 設(shè)置是否正確。當(dāng)在網(wǎng)絡(luò)中使用 DHCP 服務(wù)時(shí), ipconfig 可以檢測到計(jì)算機(jī)中分配到了什么IP地址,是否配置正確,并且可以釋放,重新獲取IP地址。這些信息對于網(wǎng)絡(luò)測試和故障排除都有重要的作用。[3]
更詳細(xì)的說明請參閱 ipconfig/? 。ipconfig /all ,參數(shù) /all 表示查看詳細(xì)的網(wǎng)絡(luò)配置。命令 ipconfig /all ^| find /i "IP Address" 表示在 'ipconfig /all 的結(jié)果中,以 "IP Address" 為查找對象,進(jìn)行搜索(其結(jié)果類似于:IP Address. . . . . . . . . . . . : 10.30.11.51 )。
而整條命令中的 for 語句,則表示在上述結(jié)果中,以冒號(hào)為間隔(delims=:),查找第2個(gè)字串(tokens=2)。很明顯,所找到的結(jié)果就是自己電腦當(dāng)前的IP地址了(如果您只有一快網(wǎng)卡或是只啟用了一個(gè)網(wǎng)卡的話。顯然,對于多個(gè)網(wǎng)卡會(huì)顯示出多個(gè)IP的情況,我并沒有考慮的太全面)。[關(guān)于 for 更詳細(xì)請參閱 4.2.4 小節(jié)]
另外,注意到在 ipconfig /all ^| find /i "IP Address" 中有一個(gè)轉(zhuǎn)義字符 ^ ,它的作用是讓后面的管道命令 | 生效,而不是讓程序把 | 誤解為 for 語句里參數(shù)的一部分。
注2. ping 其實(shí)才是本批處理的核心部分。命令 ping 的主要作用是通過發(fā)送數(shù)據(jù)包并接收應(yīng)答信息來檢測兩臺(tái)計(jì)算機(jī)之間的網(wǎng)絡(luò)是否連通。比如我可以輸入 ping 10.30.11.35 以便查看我是否能與我所在的局域網(wǎng)中IP為 10.30.11.35 的機(jī)器連通。如果我不懂批處理的話,也許我就得從 IP 10.30.11.1 開始,挨個(gè)地 ping 到 IP 10.30.11.255 ,才能達(dá)到我在本小節(jié)的最初目的。
在批處理中 ping 的3個(gè)參數(shù) -n 1 -w 200 -l 16 分別表示:僅 ping 一遍[-n 1],等待200毫秒后按超時(shí)考慮[-w 200],發(fā)送16字節(jié)的數(shù)據(jù)[-l 16]。
另外,此命令行中同時(shí)用到了兩個(gè) && 和一個(gè) || 的組合命令,我不得不承認(rèn)這種復(fù)雜的邏輯關(guān)系會(huì)給您帶來閱讀上的困難。
注3. 這里使用了 set /p =顯示內(nèi)容<nul 來顯示一些內(nèi)容,是因?yàn)檫@中方式顯示出內(nèi)容后并不換行,而 echo 卻不行。還有向上數(shù)4行的那一堆奇怪的符號(hào),表示的是退格符號(hào),能刪除掉當(dāng)前行中以顯示的內(nèi)容。
本小節(jié)的使用程度并不大,卻很有趣,至少并沒有想象中的那么愚蠢。[創(chuàng)作日期:2008-01-10]
========================================樸實(shí)的分割線========================================
6.4 令人大囧的WGA,華麗地卸載之
WGA 全稱 Windows Genuine Advantage ,是微軟制造的反盜版軟件,因其自動(dòng)潛入系統(tǒng)而備受爭議。當(dāng)用戶訪問 Windows Update 服務(wù)以及微軟網(wǎng)站的下載頁面時(shí),該計(jì)劃的附屬檢測軟件就會(huì)被請求安裝。很多用戶都是在不知情的情況下被安裝上了WGA。事實(shí)上,安裝了WGA后,正版的用戶并沒見得有什么優(yōu)勢,但盜版用戶的劣勢絕對會(huì)被發(fā)揮的淋漓盡致。如果您是盜版的受害者(盡管您更堅(jiān)持認(rèn)為自己是WGA的受害者),那么建議您仔細(xì)閱讀一下本小節(jié)。首先,卸載方法在微軟的幫助與支持中有詳細(xì)英文說明,中文版的在百度知道里也有介紹。不過,這些依然不是本文的主旨,我們更關(guān)心的還是批處理。
::::::::::WGA卸載器.bat:::::::::
@echo off
title WGA卸載器
setlocal EnableDelayedExpansion
set /a step=1
if exist WGA卸載記錄.txt (
for /f "tokens=2" %%i in (WGA卸載記錄.txt) do set /a step=%%i+1 & goto :Step!step!
)
:: 查看記錄進(jìn)行到第幾步了
:Step1
:RenameFiles
if exist %Windir%\system32\wgalogon.old del %Windir%\system32\wgalogon.old
if exist %Windir%\system32\wgatray.old del %Windir%\system32\wgatray.old
:: 檢查相關(guān)的臨時(shí)文件是否已存在,若存在則刪之
Ren %Windir%\system32\WgaLogon.dll WgaLogon.old
if %errorlevel% neq 0 goto :Abort
Ren %Windir%\system32\WgaTray.exe WgaTray.old
if %errorlevel% neq 0 goto :Abort
:: 將相關(guān)文件改名,如果操作失敗則中斷程序
call :WriteUninstallStatus
:: 將卸載情況記錄到文件中
echo 步驟一完成。已重命名文件 WgaLogon.dll 和 WgaTray.exe。
ping -n 2 127.0>nul
goto :RebootPrompt
:: 需要重啟計(jì)算機(jī)
:Step2
:UnregisterServer
Regsvr32 %Windir%\system32\LegitCheckControl.dll /u
:: 將相關(guān)的服務(wù)注冊撤消
call :WriteUninstallStatus
:: 將卸載情況記錄到文件中
echo 步驟二完成。已撤消服務(wù) LegitCheckControl.dll。
ping -n 2 127.0>nul
goto :RebootPrompt
:: 需要重啟計(jì)算機(jī)
:Step3
:DeleteFiles
Del %Windir%\system32\wgalogon.old
Del %Windir%\system32\WgaTray.old
Del %Windir%\system32\LegitCheckControl.dll
:: 將相關(guān)的文件刪除
call :WriteUninstallStatus
:: 將卸載情況記錄到文件中
echo 步驟三完成。已刪除文件 wgalogon.old WgaTray.old 和 LegitCheckControl.dll。
ping -n 2 127.0>nul
:Step4
:DeleteRegistrySubkeys
set /a step=4
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WgaLogon" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WgaNotify" /f
:: 將相關(guān)的子項(xiàng)從注冊表中刪除
call :WriteUninstallStatus
echo 步驟四完成。已刪除注冊表中相關(guān)的子項(xiàng)。
:: 將卸載情況記錄到文件中
ping -n 2 127.0>nul
:Step5
:UninstallDoneSuccessfully
echo.
echo 已完成對WGA的卸載!
del WGA卸載記錄.txt
pause>nul
exit
::::以下為程序所調(diào)用到的函數(shù)::::
:WriteUninstallStatus
:: 該函數(shù)用于將當(dāng)前卸載情況記錄到文本文件中
echo WGA卸載已完成第 %step% 步>WGA卸載記錄.txt
set /p =更改文件名稱:<nul >>WGA卸載記錄.txt
call :IsCompleted %step%
set /p =撤消服務(wù)注冊:<nul >>WGA卸載記錄.txt
call :IsCompleted %step%
set /p =刪除相關(guān)文件:<nul >>WGA卸載記錄.txt
call :IsCompleted %step%
set /p =清除注冊信息:<nul >>WGA卸載記錄.txt
call :IsCompleted %step%
goto :EOF
:IsCompleted
:: 該函數(shù)用于判斷各個(gè)卸載步驟的完成情況
if %1 gtr 0 (
echo 已完成>>WGA卸載記錄.txt
set /a step-=1
) else (
echo 未完成>>WGA卸載記錄.txt
)
goto :EOF
:RebootPrompt
set /a TimerTick=9
echo.
echo 需要重啟計(jì)算機(jī)才能繼續(xù)下一步。
echo 請?jiān)谟?jì)算機(jī)重啟后再運(yùn)行該批處理,以便繼續(xù)完成對WGA的卸載。
set /p choice=是否現(xiàn)在就重啟? [Y/N]
if "%choice%"=="y" shutdown -r -t 15 -c 因卸載WGA的需要而重啟& exit
if "%choice%"=="Y" shutdown -r -t 15 -c 因卸載WGA的需要而重啟& exit
echo 稍后請手動(dòng)重啟計(jì)算機(jī)。
pause>nul
exit
:Abort
echo 程序中止。
echo.
echo 您確信您已經(jīng)安裝了WGA?
pause>nul
exit
::::::::::::::::::::::::::::::::
[創(chuàng)作日期:2008-03-07]
參考:
[1] 利用Windows系統(tǒng)自帶命令手工搞定病毒 360百科
[2] 進(jìn)程知識(shí)庫 KnowSky
[3] IP信息查看工具—ipconfig[DOC文檔] 中國教育人博客
[4] 百度百科 百度百科
[5] 如果你的系統(tǒng)不是正版的,不要安裝wga認(rèn)證 百度知道
[6] How to disable or uninstall the pilot version of Microsoft Windows Genuine Advantage Notifications Microsoft Help and Support
目錄:
批處理的學(xué)習(xí)之一[前言]
批處理的學(xué)習(xí)之二[顯示篇]
批處理的學(xué)習(xí)之三[賦值 調(diào)用 參數(shù)]
批處理的學(xué)習(xí)之四[條件 循環(huán)]
批處理的學(xué)習(xí)之五[組合命令 管道命令]
批處理的學(xué)習(xí)之六[常用實(shí)例 上]
批處理的學(xué)習(xí)之七[常用實(shí)例 下]
批處理的學(xué)習(xí)之八[番外篇]
上次編輯 2008-08-14
聯(lián)系客服