各位非常批處理的朋友們,現(xiàn)在我們開(kāi)始學(xué)習(xí)批處理新手系列教學(xué)的第一課!(適合沒(méi)有編程經(jīng)驗(yàn)的朋友)
按照慣例,先講一下什么是"批處理".顧名思義,批處理就是把一批或者說(shuō)是一條條命令放在一個(gè)文本里,然后批量執(zhí)行!執(zhí)行這
一批命令的文件的擴(kuò)展名是BAT或者CMD,把任何一批命令放入在有這樣擴(kuò)展名的文件里,執(zhí)行時(shí)里面的命令就會(huì)一條條的執(zhí)行完,當(dāng)然
我們還可以在其中加入一些邏輯判斷的語(yǔ)句,讓里面的命令在滿足一定條件時(shí)執(zhí)行指定的命令.
了解了大概意思后,我們正式開(kāi)始學(xué)習(xí).先看一個(gè)簡(jiǎn)單的例子!
@echo off
echo "歡迎來(lái)到非常BAT!"
pause
把上面的3條命令保存為test.bat或者test.cmd然后執(zhí)行,他就會(huì)在屏幕上顯示二行話:"歡迎來(lái)到非常BAT!請(qǐng)按任意鍵繼續(xù). . ."
這就是一個(gè)簡(jiǎn)單批處理文件了,我們來(lái)分析一下.
這個(gè)批處理文件一共就用了2條命令 "echo" 和"pause" 還有一個(gè)特殊符號(hào)"@"
@符號(hào)在批處理中的作用是關(guān)閉當(dāng)前行命令的回顯,也就是不顯示執(zhí)行的是什么命令,只顯示命令的結(jié)果!
你可以執(zhí)行下面這個(gè)批處理文件來(lái)理解,保存為*.bat或者*.CMD
@echo 你好
echo 你好
@pause
echo命令的作用有兩個(gè),一個(gè)是在CMD上回顯一行內(nèi)容.如:echo "歡迎來(lái)到非常BAT!",還一個(gè)是關(guān)閉命令的回顯:echo off
echo off的作用就相當(dāng)于在每條命令前面加一個(gè)@符號(hào),這樣所有的命令將只會(huì)顯示結(jié)果不顯示命令.
我們?cè)趀cho off這命令前加一個(gè)@符號(hào)是為了不讓echo off這條命令本身顯示出來(lái),讓批處理更完美!
pause命令就是暫停的意思,防止批處理執(zhí)行完后直接退出!執(zhí)行pause命令后會(huì)自動(dòng)在CMD里顯示"請(qǐng)按任意鍵繼續(xù). . ."這樣一行話!
從上面這個(gè)簡(jiǎn)單的批處理中,我們可以發(fā)現(xiàn)其實(shí)批處理就是運(yùn)用一些含有特殊意義的符號(hào)和一些完成指定功能的命令組合而成,那么
在批處理中有多少這樣的特殊符號(hào)和功能命令呢?我們現(xiàn)在就來(lái)仔細(xì)了解一下一些最常用的!
(以下內(nèi)容來(lái)源網(wǎng)絡(luò),請(qǐng)各位仔細(xì)閱讀,好進(jìn)入下節(jié)的實(shí)例說(shuō)明)
批處理的常見(jiàn)命令
REM
ECHO
GOTO
CALL
PAUSE
IF
還有(FOR,SETLOCAL,SHIFT)這幾個(gè)命令比較難,不適合寫(xiě)在基礎(chǔ)篇,以后說(shuō)明!
批處理定義:顧名思義,批處理文件是將一系列命令按一定的順序集合為一個(gè)可執(zhí)行的文本文件,其擴(kuò)展名為BAT。
這些命令統(tǒng)稱批處理命令。
介紹命令
1、REM
REM是個(gè)注釋命令,一般用來(lái)給程序加上注解,該命令后的內(nèi)容在程序執(zhí)行時(shí),將不會(huì)被顯示和執(zhí)行。
例:REM 這個(gè)命令就是注釋
這一句將不會(huì)被執(zhí)行
2、ECHO
ECHO是一個(gè)回顯命令,主要參數(shù)有OFF和ON。一般用ECHO MESSAGE來(lái)顯示一個(gè)特定的消息。
例:
Echo off
Rem 以上代表關(guān)閉回顯(就是不顯示所執(zhí)行的命令)
Echo 這個(gè)就是消息(message)
Rem 以上代表顯示“這就是消息(message)”這列字符
咱們來(lái)看看執(zhí)行結(jié)果:
3、GOTO
GOTO會(huì)點(diǎn)編程的朋友就會(huì)知道這是跳轉(zhuǎn)的意思。
在批處理中允許以“:XXX”來(lái)構(gòu)建一個(gè)標(biāo)號(hào),然后用GOTO XXX直接來(lái)執(zhí)行標(biāo)號(hào)后的命令。
例:
:lable
REM 上面就是名為L(zhǎng)ABEL的標(biāo)號(hào)
DIR C:\
DIR D:\
GOTO lable
REM 以上程序跳轉(zhuǎn)標(biāo)號(hào)LABEL處繼續(xù)執(zhí)行
咱們來(lái)看看結(jié)果:
4、CALL
CALL命令可以在批處理執(zhí)行過(guò)程中調(diào)用另一個(gè)批處理,當(dāng)另一個(gè)批處理執(zhí)行完后,再繼續(xù)執(zhí)行原來(lái)的批處理
例:
創(chuàng)建一個(gè)2.BAT,內(nèi)容如下
ECHO 這就是2的內(nèi)容
創(chuàng)建一個(gè)1.BAT,內(nèi)容如下
ECHO 這是1的內(nèi)容
CALL 2.BAT
ECHO 1和2的內(nèi)容全部顯示完成。
執(zhí)行1.BAT,來(lái)看看結(jié)果:
5、PAUSE
PAUSE,玩游戲的人都知道,暫停的意思
在這里就是停止系統(tǒng)命令的執(zhí)行并顯示下面的內(nèi)容。
例:
PAUSE
6、IF
IF 條件判斷語(yǔ)句,語(yǔ)法格式如下:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
解釋下:
[NOT]:將返回結(jié)果取反值,就是“如果沒(méi)有”的意思
ERRORLEVEL:
是命令執(zhí)行完成后返回的退出值
Number:
退出值的數(shù)字取值范圍0~255,判斷時(shí)值的排列順序應(yīng)該由大到小。返回的值大于等于指定的值時(shí),條件成立
string1==string2:
string1和string2都為字符的數(shù)據(jù),英文內(nèi)字符的大小寫(xiě)將看作不同,這個(gè)條件中的等于號(hào)必須是兩個(gè)(絕對(duì)相等的意思)
條件相等后即執(zhí)行后面的command
EXIST filename:
為文件或目錄存在的意思
IF ERRORLEVEL這個(gè)句子必須放在某一個(gè)命令的后面,執(zhí)行命令后由IF ERRORLEVEL 來(lái)判斷命令的返回值。
例:
(1)
IF [NOT] ERRORLEVEL number command
檢測(cè)命令執(zhí)行完后的返回值做出判斷
echo off
dir z:
rem 如果退出代碼為1(不成功)就跳至標(biāo)題1處執(zhí)行
IF ERRORLEVEL 1 goto 1
REM 如果退出代碼為0(成功)就跳至標(biāo)題0處執(zhí)行
IF ERRORLEVEL 0 goto 0
:0
echo 命令執(zhí)行成功!
Rem 程序執(zhí)行完畢跳至標(biāo)題exit處退出
goto exit
:1
echo 命令執(zhí)行失敗!
Rem 程序執(zhí)行完畢跳至標(biāo)題exit處退出
goto exit
:exit
Rem 這里是程序的出口
(2)IF string1==string2 command
檢測(cè)當(dāng)前變量的值做出判斷
ECHO OFF
IF 1==2 goto no
Echo 變量相等!
goto exit
:no
echo 變量不相等
goto exit
:exit
看看效果,敲擊這個(gè)命令1.bat 數(shù)字
(3)IF [NOT] EXIST filename command
發(fā)現(xiàn)特定的文件做出判斷
echo off
IF not EXIST autoexec.bat goto 1
echo 文件存在成功!
goto exit
:1
echo 文件不存在失敗!
goto exit
:exit
這個(gè)批處理大家可以放在C盤(pán)和D盤(pán)分別執(zhí)行,看看效果
特殊符號(hào):
1. @
2. >
3. >>
4. |
5. ^
6. &
7. &&
8. ""
9. ,
10. ;
廢話少說(shuō),開(kāi)講了
一、 @
這個(gè)字符在批處理中的意思是關(guān)閉當(dāng)前行的回顯。我們從前幾課知道
ECHO OFF可以關(guān)閉掉整個(gè)批處理命令的回顯,但不能關(guān)掉ECHO OFF這個(gè)命令,現(xiàn)在我們?cè)贓CHO OFF這個(gè)命令前加個(gè)@,就可以達(dá)到所
有命令均不回顯的要求
1.bat
echo off
dir d:\
2.bat
@echo off
dir d:\
二、 >
這個(gè)字符的意思是傳遞并且覆蓋,他所起的作用是將運(yùn)行的回顯結(jié)果傳遞到后面的范圍(后邊可以是文件,也可以是默認(rèn)的系統(tǒng)控
制臺(tái))
比如:
文件1.txt 的文件內(nèi)容是:
1+1
使用命令:dir *.txt >1.txt
這時(shí)候1.txt 內(nèi)容如下
驅(qū)動(dòng)器 C 中的卷沒(méi)有標(biāo)簽。
卷的序列號(hào)是 3827-1BDD
C:\ 的目錄
2004-05-25 00:57 17,755,907 Log.txt
2004-05-26 15:21 3 1.txt
2004-05-26 15:21 0 2.txt
3 個(gè)文件 17,755,910 字節(jié)
0 個(gè)目錄 339,111,936 可用字節(jié)
三、>>
這個(gè)符號(hào)的作用和>有點(diǎn)類似,但他們的區(qū)別是>>是傳遞并在文件的末尾追加,而>是覆蓋
用法同上
同樣拿1.txt做例子
內(nèi)容是1+1
使用命令:dir *.txt >>1.txt
咱們來(lái)看看顯示的結(jié)果如何
四、|
這是一個(gè)管道傳輸命令,意思是將上一命令執(zhí)行的結(jié)果傳到下一個(gè)命令去處理
例如:
dir c:\|find "txt"
以上命令是:查找C:\所有,并發(fā)現(xiàn)TXT字符串。
FIND的功能請(qǐng)用 FIND /? 自行查看
在不使format的自動(dòng)格式化參數(shù)時(shí),我是這樣來(lái)自動(dòng)格式化A盤(pán)的
echo y|format a: /s /q /v:system
用過(guò)format的都知道,再格盤(pán)時(shí)要輸入y來(lái)確認(rèn)是否格盤(pán),這個(gè)命令前加上echo y并用|字符來(lái)將echo y的結(jié)果傳給format命令
從而達(dá)到自動(dòng)輸入y的目的
(這條命令有危害性,測(cè)試時(shí)請(qǐng)慎重)
五、^
^是對(duì)特殊符號(hào)"<",">","&"的前導(dǎo)字符,在命令中他將以上3個(gè)符號(hào)的特殊功能去掉,僅僅只把他們當(dāng)成符號(hào)而不使用他們的特殊意
義。
比如
echo test ^>1.txt
結(jié)果則是
他沒(méi)有追加在1.txt里,呵呵。只是顯示了出來(lái)
六、 &
這個(gè)符號(hào)允許在一行中使用2個(gè)以上不同的命令,當(dāng)?shù)谝粋€(gè)命令執(zhí)行失敗了,也不影響后邊的命令執(zhí)行。
比如:
dir z:\ & dir y:\ & dir c:\
以上命令會(huì)連續(xù)顯示z,y,c盤(pán)的內(nèi)容,不理會(huì)該盤(pán)是否存在
七、 &&
這個(gè)命令和上邊的類似,但區(qū)別是,第一個(gè)命令失敗時(shí),后邊的命令也不會(huì)執(zhí)行
dir z:\ && dir y:\ && dir c:\
八、""
雙引號(hào)允許在字符串中包含空格,進(jìn)入一個(gè)特殊目錄可以用如下方法
cd "program files"
cd progra~1
cd pro*
以上三種方法都可以進(jìn)入program files這個(gè)目錄
九、,
逗號(hào)相當(dāng)于空格,在某些情況下“,”可以用來(lái)當(dāng)做空格使
比如
dir,c:\
十、;
分號(hào),當(dāng)命令相同時(shí),可以將不同目標(biāo)用;來(lái)隔離,但執(zhí)行效果不變,如執(zhí)行過(guò)程中發(fā)生錯(cuò)誤,則只返回錯(cuò)誤報(bào)告,但程序還是會(huì)
執(zhí)行。
比如:
dir c:\;d:\e:\;f:\
以上命令相當(dāng)于
dir c:\
dir d:\
dir e:\
dir f:\