『壹』 如何設置bat命令行的參數分隔符
Echo echo=1/*^>nul^&@cls>1.bat
含有特殊符號要夾 ^ 轉義符
『貳』 bat.文件的命令語法, 句式或bat文件教程
常用命令
echo、@、call、pause、rem(小技巧:用::代替rem)是批處理文件最常用的幾個命令,我們就從他們開始學起。
==== 注 ===========
首先, @ 不是一個命令, 而是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等功能。
批處理文件的內容為: 命令注釋:
@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下通常有:
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 /?查看用法。
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 指定一個單一字母可替換的參數。
(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 用戶
『叄』 如何寫一個bat文件要求用戶輸入兩個參數
方法和詳細的操作步驟如下:
1、第一步,創建兩個bat文件進行測試,見下圖,轉到下面的步驟。
『肆』 c語言命令行參數如何運行
1、命令行參數是保存在argv[]里的。argc只是說參數的個數。命令行參數一般是從argv[1]開始(包括argv[1])argv[0]是程序的名字。在輸命令的時候,命令行參數之間用空格隔開。
2、比如:
#include<stdio.h>
intmain(intargc,char*argv[])
{
if(argc<2)
{
printf("youmustinputargs!");
return0;
}
if(strcmp(argv[1],"help")==0)
{
printf("此程序參數如下: ");
printf("-c提示是否確定。 ");
printf("-d跳過警告,直接刪除。 ");
printf("exit為退出。");
return0;
}
elseif(strcmp(argv[1],"-c")==0)
{
//此處省略N行你的代碼
}
return0;
}
如果編譯出來的程序名字叫 test.exe,那麼在命令行下輸入 test.ext help後就會列印
此程序參數如下:
-c 提示是否確定。
-d 跳過警告,直接刪除。
exit為退出。
『伍』 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文件命令大全
有關某個命令的詳細信息,請鍵入 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文件啟動一個含有參數的快捷方式 並且使其最小化運行
右鍵點擊快捷方式,屬性,把目標裡面的全部復制下來,比如我的FBS三國戰記是是
"D:gemesFbasfbas.exe"-gkovassga-w-r800*600
start/min """D:gemesFbasfbas.exe"-gkovassga-w-r800*600
貌似lnk快捷方式不能在命令行使用
『捌』 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 命令或批處理程序。
『玖』 利用bat命令修改文本內某行參數
@echooff
cd/d"D:我的文檔用戶文檔1"
set"fn=config.ini"
echo請輸入要修改的"行號=數值"注意不要加額外空格
set/pss=如有多個修改項則加;號分隔(如16=33;17=33):
ifnotdefinedssexit
set#%ss:;=&set#%
(for/f"tokens=1*delims=:"%%iin('findstr/n."%fn%"')do(
ifdefined#%%i(
for/f"tokens=1*delims=="%%kin("%%j")docallecho%%k=%%#%%i%%
)elseecho;%%j
))>#
move#"%fn%"
pause