国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > BAT > 正文

cmd批處理常用符號(hào)詳解

2020-03-29 20:02:35
字體:
供稿:網(wǎng)友
1、@
一般在它之后緊跟一條命令或一條語句,則此命令或語句本身在執(zhí)行的時(shí)候不會(huì)顯示在屏幕上。請(qǐng)把下面的代碼保存為test.cmd文件,然后運(yùn)行,比較一下兩條echo語句在屏幕上的輸出差異:
    echo a
    @pause
    @echo b
    @pause
執(zhí)行結(jié)果如下:
        C:/Documents and Settings/JM/桌面>echo a
        a
        請(qǐng)按任意鍵繼續(xù)...

        請(qǐng)按任意鍵繼續(xù)...
2、%、%%
百分號(hào)用在不同的場(chǎng)合,有不同的含義:
① 當(dāng)百分號(hào)成對(duì)出現(xiàn),并且其間包含非特殊字符時(shí),一般做變量引用處理,比如:%var%、%str%。把以下代碼保存為批處理文件,運(yùn)行后觀察屏幕顯示結(jié)果:
    @echo off
    set str=abc
    echo 變量 str 的值是: %str%
    pause
在屏幕上將顯示這樣的結(jié)果:
        變量 str 的值是: abc
        按任意鍵繼續(xù)...
另外,百分號(hào)作為變量引用還有一種特殊形式,那就是對(duì)形式參數(shù)的引用,此時(shí),單個(gè)百分號(hào)后面緊跟0~9這10個(gè)數(shù)字,如%0、%1,其中,%0為腳本本身的名稱,%1至%9為第二至九個(gè)參數(shù)...最多支持%0~%9,%10以后就是變量引用了,即%15為%1的值接上5。
請(qǐng)看演示代碼:
    @echo off
    if defined str goto next
    set str=
    set /p str=請(qǐng)把文件拉到本窗口后回車:
    call "%~0" %str%
    pause
    exit
    :next
    cls
    echo 本批處理文件完整路徑為:"%~0"
    echo 拖到本窗口的文件完整路徑為:"%~1"
    goto :eof
② 出現(xiàn)在 set /a 語句中時(shí),表示兩數(shù)相除取余數(shù),也就是所謂的模運(yùn)算,它在命令行窗口和批處理文件中的寫法略有差異:在命令行窗口中,只需要單個(gè)的%,在批處理文件中,需要連續(xù)兩個(gè)百分號(hào),寫成%%。
例如:在命令行窗口中,運(yùn)行 set /a num=4%2 ,則結(jié)果將顯示0,因?yàn)?除以2的余數(shù)為0;如果保存為批處理文件,則此語句將略有改變:
    @echo off
    set /a num=4%%2
    echo 4除以2的余數(shù)為 %num%
    pause
③ 轉(zhuǎn)義符號(hào):如果要顯示%本身時(shí),需要在前面用%來轉(zhuǎn)義。例如:
    @echo off
    echo 一個(gè)百分號(hào):%%
    echo 兩個(gè)百分號(hào):%%%%
    echo 三個(gè)百分號(hào):%%%%%%
    pause
3、:、::
① 以:打頭的單個(gè)的:表示該行是一個(gè)標(biāo)簽,它之后的內(nèi)容是一個(gè)標(biāo)簽段,如:test,則表示:test之下的內(nèi)容是標(biāo)簽段,而test是這個(gè)標(biāo)簽段的名,可以用 goto test 、goto :test 跳轉(zhuǎn)到該標(biāo)簽段或用 call :test 調(diào)用該子過程;而連續(xù)兩個(gè)冒號(hào)打頭表示該行內(nèi)容為注釋內(nèi)容,實(shí)際上,:: 是個(gè)無效的標(biāo)簽名,:加上空格同樣可以起到注釋的作用,此時(shí),::的功能和注釋命令rem相同;但是,rem 注釋語句中的某些命令符號(hào)如重定向符號(hào)和管道符號(hào)還是會(huì)執(zhí)行,而如果用::來注釋的時(shí)候,與::同處一行的所有命令或符號(hào)直接被命令解釋器忽略掉,無形中提高了注釋的兼容性和整個(gè)程序的執(zhí)行效率,并且在眾多的命令語句中更顯得醒目,所以,注釋語句推薦使用::的格式。
② 在 set 語句中:和~同時(shí)使用時(shí),: 起到截取字符串的功能。假設(shè) set str=abcde,那么,set var=%str:~0,1% 表示截取字符串a(chǎn)bcde的第一個(gè)字符;和=同時(shí)使用時(shí),起到替換字符串的功能。假設(shè):set str=abc:de,那么,set var=%str:a=1% 則表示把字符串a(chǎn)bc:de中的a替換為1,set var=%str::=2% 則表示把字符串a(chǎn)bc:de中的:替換為2;
4、~
① 用在 set 語句中,和:同時(shí)使用時(shí),起到截取字符串的功能,請(qǐng)參考上一條的解釋;
② 用在 set /a 語句中時(shí),它是一元運(yùn)算符號(hào),表示將操作數(shù)字按位取反,例如,set /a num=~1的執(zhí)行結(jié)果是-2,set /a num=~0的結(jié)果是-1
③ 用在for語句中,表示增強(qiáng)for的功能,能夠提取到更多的信息。例如:在批處理文件的for語句中:%%~i表示去掉第一對(duì)外側(cè)引號(hào),%%~zi表示獲取文件的大小(以字節(jié)為單位),%%~ni表示獲取文件名,%%~xi表示獲取擴(kuò)展名(帶點(diǎn)號(hào))……它們可以組合使用,如%%~nxi表示獲取文件名和后綴名。
5、>、>>
一般而言,>表示用新內(nèi)容覆蓋原文件內(nèi)容,>>表示向原文件追加內(nèi)容,此時(shí),它們以重定向符號(hào)的身份出現(xiàn);如果用在 set /a 語句中,則>表示分組,>>表示邏輯移位;
6、|
一般而言,它以管道符號(hào)的身份出現(xiàn),表示把在它之前的命令或語句的執(zhí)行結(jié)果作為在它之后的命令或語句的處理對(duì)象,簡(jiǎn)而言之,就是把它之前的輸出作為它之后的輸入,例如:echo abcd|findstr "b",表示把echo abcd的執(zhí)行結(jié)果,作為findstr "b" 的執(zhí)行對(duì)象,也就是在字符串a(chǎn)bcd中查找b字符;如果test.txt中有abcd字符串,則該語句與 findstr "b" test.txt 具有同樣的效果;
7、^
一般而言,^以轉(zhuǎn)義字符的身份出現(xiàn)。因?yàn)樵?cmd環(huán)境中,有些字符具備特殊功能,如>、>>表示重定向,|表示管道,&、&&、||表示語句連接……它們都有特定的功能,如果需要把它們作為字符輸出的話,echo >、echo | ……之類的寫法就會(huì)出錯(cuò)——cmd解釋器會(huì)把它們作為具有特殊功能的字符對(duì)待,而不會(huì)作為普通字符處理,這個(gè)時(shí)候,就需要對(duì)這些特殊字符做轉(zhuǎn)義處理:在每個(gè)特殊字符前加上轉(zhuǎn)義字符^,因此,要輸出這些特殊字符,就需要用 echo ^>、echo ^|、echo ^|^|、echo ^^……之類的格式來處理;
8、&
一般而言,&表示兩條命令或語句同時(shí)執(zhí)行的意思。如 echo a&echo b,將在屏幕上同時(shí)顯示a和b字符。當(dāng)幾條語句含義近似或作用相同且沒有先后的順序之別時(shí),啟用&符號(hào)連接這些語句將會(huì)增加程序的可讀性;
9、&&、||
這是一對(duì)含義截然相反的命令符,&&表示如果它之前的語句成功執(zhí)行,將執(zhí)行它之后的語句,而||則表示如果它之前的語句執(zhí)行失敗,將執(zhí)行它之后的語句;在某些場(chǎng)合,它們能替代 if……else…… 語句;例如:
    @echo off
    md test&&echo 成功創(chuàng)建文件夾test||echo 創(chuàng)建文件夾test失敗
    pause
效果等同于如下代碼:
    @echo off
    md test
    if "%errorlevel%"=="0" (echo 成功創(chuàng)建文件夾test) else echo 創(chuàng)建文件夾test失敗
    pause
10、()
小括號(hào)對(duì)經(jīng)常出現(xiàn)在for語句和if語句中,還有一些特定場(chǎng)合;在for和if語句中屬于語句格式的要求,例如:
① for %%i in (語句1) do (語句2):在這條語句中,語句1必須用括號(hào)對(duì)包圍,而語句2的括號(hào)對(duì)則可視情況予以拋棄或保留:如果語句2是單條語句或用&、& &、||等連接符號(hào)連接的多條語句,括號(hào)對(duì)可以拋棄,如果語句2是有邏輯先后關(guān)系的多條語句集合,則必須保留括號(hào)對(duì),并且,多條語句必須斷行書寫;例如:
    @echo off
    for %%i in (a b c) do echo %%i&echo --------
    pause
也可以改寫為:
    @echo off
    for %%i in (a b c) do (
        echo %%i
        &echo --------
    )
    pause
② if 條件 (語句1) else (語句2):如果沒有else部分,則語句1的括號(hào)對(duì)可有可無;如果有else部分,則語句1中的括號(hào)對(duì)必須保留,此時(shí),語句2中的括號(hào)對(duì)保留與否,和上一點(diǎn)類似。例如:
    @echo off
    if exist test.txt echo 當(dāng)前目錄下有test.txt
    pause
    @echo off
    if exist test.txt (echo 當(dāng)前目錄下有test.txt) else echo 當(dāng)前目錄下沒有test.txt
    pause
    @echo off
    if exist test.txt (echo 當(dāng)前目錄下有test.txt) else (
        echo 當(dāng)前目錄下沒有test.txt
        pause
        cls
        echo 即將創(chuàng)建test.txt文件
        cd.>test.txt&&echo 成功創(chuàng)建test.txt
    )
    pause
③ 特定場(chǎng)合下使用括號(hào)對(duì),不但可以使代碼邏輯清晰,增強(qiáng)可讀性,還可能會(huì)減少代碼量。比如用echo語句構(gòu)造多行文本內(nèi)容的時(shí)候:
    @echo off
    (
    echo 第一行
    echo 第二行
    echo 第三行
    )>test.txt
    start test.txt
如果不使用括號(hào)對(duì)的話,則需要使用如下代碼:
    @echo off
    echo 第一行>test.txt
    echo 第二行>>test.txt
    echo 第三行>>test.txt
    start test.txt
11、+、-、*、/
在 set /a 語句中,這些符號(hào)的含義分別為:加、減、乘、除。例如:set /a num=1+2-3*4/5。需要注意的是,這些運(yùn)算符號(hào)遵循數(shù)學(xué)運(yùn)算中的優(yōu)先級(jí)順序:先乘除后加減,有括號(hào)的先算括號(hào),并且,直接忽略小數(shù)點(diǎn),因此,剛才那個(gè)算式的結(jié)果是1而不是0或0.6。
另外,有可能會(huì)在代碼中看到這樣的寫法:set /a num+=1、set /a num-=1、set /a num*=1 和 set /a num/=1,這些表示累加、累減、累乘、累除,步長(zhǎng)都是1,展開后的完整寫法為:set /a num=num+1、set /a num=num-1、set /a num=num*1 和 set /a num=num/1(set /a 語句中,變量引用可以忽略百分號(hào)對(duì)或感嘆號(hào)對(duì),set /a num=%num%+1 與 set /a num=num+1 等同)
12、equ、neq、lss、leq、gtr、geq
這幾個(gè)命令符是if語句中常用到的數(shù)值比較符號(hào),取自英文的關(guān)鍵字母,具體的含義為:
        命令符號(hào)        含義                英文解釋
        EQU                等于                equal
        NEQ                不等于                 not equal
        LSS                少于                 less than
        LEQ                少于或等于         less than or equal
        GTR                大于                 greater than
        GEQ                大于或等于         greater than or equal

 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 洪江市| 夹江县| 静宁县| 通许县| 三亚市| 吉林市| 康乐县| 阿图什市| 景德镇市| 碌曲县| 桦川县| 安陆市| 巍山| 紫云| 扶沟县| 建宁县| 启东市| 来安县| 乌兰浩特市| 德江县| 饶平县| 九台市| 桑日县| 开封县| 南皮县| 龙里县| 永靖县| 蒲城县| 天峻县| 星座| 阿拉尔市| 宁陕县| 萨迦县| 健康| 沂南县| 赞皇县| 阿荣旗| 怀宁县| 肇州县| 高青县| 嘉义县|