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