windows批處理中if語句的用法詳解
if
if是宇宙通用的條件選擇語句標(biāo)識,在批處理指令中也不例外。但和其他語言不同之處在于,批處理中的if有一個(gè)not開關(guān),即if XXX表示xxx為真時(shí)執(zhí)行后續(xù)語句,if not XXX表示XXX為假時(shí)執(zhí)行后續(xù)語句。
從判斷內(nèi)容的角度來說,if提供了三種類型的判斷,分別是數(shù)字、字符串和文件路徑,下面做一個(gè)批處理文件,統(tǒng)一演示一下
:: iftest.bat @echo off dir test.txt if errorlevel 1 (echo error) if a==a (echo a==a) if exist iftest.bat (echo iftest.bat exist)
結(jié)果如下
>iftest.bat
。。。
找不到文件
error
a==a
iftest.bat exist
首先,if errorlevel 1,表示如果上一條命令的錯(cuò)誤碼大于1,那么就執(zhí)行后續(xù)代碼。上一條代碼是dir test.txt,這個(gè)文件是不存在的,所以執(zhí)行結(jié)果是找不到文件,同時(shí)系統(tǒng)錯(cuò)誤碼也變成了1。在這種情況下,if errorlevel 1判定為真,執(zhí)行后面的echo error語句。
第二條沒什么好說的,判斷兩個(gè)字符串是否相等,很顯然相等。
第三條其實(shí)也沒什么好說的,判斷iftest.bat是否存在,我們創(chuàng)建的這個(gè)腳本就是iftest.bat,這個(gè)文件顯然是存在的。
分析這三條代碼可以發(fā)現(xiàn),if后面緊跟著要執(zhí)行的命令,是用小括號括起來的,這一點(diǎn)和許多編程語言不同。如果執(zhí)行的語句只有一行,那么這個(gè)括號可以省略,否則就必須帶上,而且括號(和條件之間必須有空格。
有一些奇葩的dos指令,需要在換行時(shí)才能生效,比如del,這種情況下代碼必須換行。
擴(kuò)展命令
上面這三種基礎(chǔ)指令,其實(shí)很弱小,甚至無法比較兩個(gè)數(shù)字。所以windows分別為其提供了擴(kuò)展功能,對應(yīng)指令如下:
原生 | 擴(kuò)展 | 說明 |
---|---|---|
if errorlevel xxx | if cmdextversion xxx | 判斷系統(tǒng)錯(cuò)誤碼 |
if a==b | if a op b | 字符串或者數(shù)值比較,op包含多種運(yùn)算符 |
if exist xxx | if defined xxx | 擴(kuò)展指令還可以檢查變量是否存在 |
其中,op的可用運(yùn)算符包括
op | 說明 | op | 說明 |
---|---|---|---|
EQU | 等于 | NEQ | 不等于 |
LSS | 小于 | LEQ | 小于或等于 |
GTR | 大于 | GEQ | 大于或等于 |
如果是兩個(gè)數(shù)字比較,那么就直接比較大小;如果是字符串,那么就根據(jù)ASCII的位置進(jìn)行比較。并且此時(shí)還有一個(gè)忽略大小寫開關(guān)/i,選中之后,在比較字符時(shí)將忽略大小寫。
:: ifadvanced.bat @echo off dir test.txt if cmdextversion 1 (echo error) if 3 LSS 4 (echo "3<4") set a=5 if defined a (echo a=%a%)
運(yùn)行結(jié)果如下
>ifadvanced.bat
找不到文件
error
"3<4"
a=5
else
批處理中的else,或者else if有很多說道,比如必須和上一個(gè)if同行,如果if中的命令是多行的,那么就必須和if的尾括號同行,否則就不會被執(zhí)行。
:: ifelse.bat @echo off if %1==1 ( goto :a )else if %1==2 ( goto :b )else ( goto :c ) :a echo you inputted 1 goto :eof :b echo you inputted 2 goto :eof :c echo you didn't input 1 or 2 goto :eof
運(yùn)行結(jié)果如下
>iftest 1
you inputted 1
>iftest 2
you inputted 2
>iftest 5
you didn't input 1 or 2
到此這篇關(guān)于windows批處理中if語句的用法詳解的文章就介紹到這了,更多相關(guān)批處理if語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
批處理bat下載FTP服務(wù)器上某個(gè)目錄下的文件
這篇文章主要介紹了批處理bat下載FTP服務(wù)器上某個(gè)目錄下的文件的方法,需要的朋友可以參考下2014-07-07Windows設(shè)置開機(jī)自啟動(dòng)bat腳本
讓W(xué)indows開機(jī)自啟動(dòng),可以通過一個(gè)腳本來實(shí)現(xiàn),如果直接開機(jī)啟動(dòng)該腳本會彈出一個(gè)黑框,我們希望能后臺執(zhí)行它,喜歡的朋友可以參考下2014-01-01用批處理實(shí)現(xiàn)強(qiáng)制與他人QQ聊天
用批處理實(shí)現(xiàn)強(qiáng)制與他人QQ聊天...2007-02-02win7創(chuàng)建wifi熱點(diǎn)腳本分享
寫了個(gè)bat軟件通過選項(xiàng)方便創(chuàng)建,開啟,關(guān)閉,win7下的承載網(wǎng)絡(luò),并經(jīng)數(shù)次測試可用,下面分享一下這個(gè)win7創(chuàng)建wifi熱點(diǎn)的腳本,需要的朋友可以參考下2014-03-03