<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    懵懵燈燈的BLOG

    寒夜孤燈點(diǎn)點(diǎn)星

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      56 隨筆 :: 10 文章 :: 22 評論 :: 0 Trackbacks

    控制結(jié)構(gòu)

    ?

    1.?????? 如何定義行號?

    :<label>

    ?????? 可以定義任意長度的 label 并且中間允許有空格,但是 MS-DOS 只區(qū)分其中的前 8 個字符,以冒號開頭的腳本文件行不被處理。

    行號同樣不區(qū)分大小寫。行號的冒號前面可以有空白符號。

    ?

    2.?????? 如何使用 GOTO 語句?

    GOTO <label>

    <label> 一般為所定義的行號,如果命令擴(kuò)展被允許( default )也可以用命令跳轉(zhuǎn)到文件末尾:

    GOTO :EOF

    ????????????? :EOF 不區(qū)分大小寫

    ????????????? 如果命令找不到需要跳轉(zhuǎn)的行好位置,則顯示:

    Label not found

    3.?????? 如何使用 For 循環(huán)語句?

    FOR {%<var>|%%<var>} IN (<set>) DO <command>

    FOR 語句可以在命令行和腳本文件中使用,在腳本文件中使用,變量定義和引用用 %% ;在命令行中使用,變量定義和引用用 % 。變量名是大小寫敏感的,并且可以用除了 0 9 任意的單個字符(不包含元符號),這點(diǎn)比較特殊。 DO 后面是需要執(zhí)行的語句, 循環(huán)變量的定義域在 DO 子句中。

    ?

    <set> 有多種形式考慮:

    l?????? 可以是字符串的集合,中間用空白符分割:

    ?

    <string> <string> <string>

    l?????? 可以是通配符展開的 文件名或路徑名

    *.bat? *.?ml

    另外文件名還可以是特殊的字符 , 當(dāng)前目錄 (.) 和上級目錄( ..

    這些內(nèi)容之間可以通過分隔符分開,分隔符是空白、分號、逗號、雙引號,注意引號本身會傳遞到循環(huán)變量中去, 而分號和逗號則不會,另外如果其他三種分隔符出現(xiàn)在雙引號中,他們會被傳遞到循環(huán)變量中去。

    ?

    可以對不同種類的 <set> 值進(jìn)行遍歷:

    l?????? 對字符串遍歷

    FOR %%<var> IN (<string-set>) DO <command>

    l?????? 對文件進(jìn)行遍歷

    FOR %%<var> IN (<file-path-name-wildcard>) DO <command>

    ????????????? 下面的命令需要命令擴(kuò)展打開

    l?????? 對目錄進(jìn)行遍歷

    FOR /D %%<var> IN (<dir-path-name-wildcard>) DO <command>

    ?

    l?????? 遞歸遍歷文件樹

    FOR /R [[<driver>:]<path>] %%<var> IN (<set>) DO <command>

    ????????????? 如果沒有目錄指定,則默認(rèn)從當(dāng)前目錄開始。

    l?????? 進(jìn)行步長型循環(huán)

    FOR /L %%<var> IN? (<start> <step> <end>) DO <command>

    其中 <start> <step> <end> 是整數(shù)(其他數(shù)會取整),無法解釋的字符串認(rèn)為是 0 ,可以遞增或遞減。

    l?????? 文件遍歷和解析

    FOR /F ["<parsing-keywords>"] %%<var> IN (<set>) DO <command>

    其中 <parsing-keywords> 的形式(大小寫不敏感)如下:

    ?????? eof=<c>?????? #<c> 是一個字符的行結(jié)束符,默認(rèn)是 newline 字符,行結(jié)束符后面認(rèn)為是注釋

    ?????? skip=<N>?????? #<N> 是從行首跳過的行數(shù),默認(rèn)是 0

    delims=<xxx>?? #<xxx> 是記錄字段的分隔符集,默認(rèn)是空格和 <tab> ,覆蓋默認(rèn)會提取空白

    tokens=[{<X>,|<M>-<N>,}…][*]? # 指定提取的記錄字段,默認(rèn)是 1 ,最后的 * 代表剩余字段

    ??????????????????????????????????????????????????????? # 剩余字段不會去除分隔符,但是去除注釋

    usebackq??????? # 使用 back quotation 作為命令的引用符(見 <set> 的格式),默認(rèn)是不使用

    ?

    如果不使用 usebackq 選項(xiàng), <set> 的形式:

    <file-set>???????????????????? #no quotation

    “<literal-string>”?? #double quotation

    ‘<command>’????? #single quotation

    如果使用 useback 選項(xiàng), <set> 的形式:

    ?

    “<file-set>”????????? # double quotation

    ‘<literal-string>’???? #single quotation

    `<command>`????? #back quotation

    ?

    關(guān)于隱含變量,只需指定首個變量的字母,其它按順序依次排列,最多可以定義 26 個變量。(大小寫敏感)

    ?

    ?

    ?

    FOR 語句中的變量名同樣可以展開為:

    %%~[{f|d|a|z|s|n|x|t|p}][$<var>:]<c>

    ?

    4.?????? IF

    條件語句的語法格式為:

    ????? IF [NOT] <condition> <command> [ELSE <command>]

    ?????? 其中 NOT 表示條件真值去反。

    ??????

    ?????? 利用不同的 <condition>, 我們可以判斷

    l?????? ERROR-LEVEL:

    ERRORLEVEL <n>

    等于或大于 <n> 的錯誤發(fā)生時(shí)為真

    l?????? 字符串相等

    <string>==<string>

    字符串相等,不需要用引號環(huán)繞

    l?????? 文件存在

    EXIST <file-or-dir-name>

    下面需要命令擴(kuò)展打開

    l?????? 字符串比較

    [/I] <string> <comparator> <string>

    /I 選項(xiàng)打開則比較是 case-insensitive, 如果都是數(shù)字作比較,則轉(zhuǎn)為用數(shù)值比較,只能比較整數(shù),比較浮點(diǎn)數(shù)則采用字符串比較法。

    ?

    比較操作符 ( 大小寫不敏感 ) 包括:

    EQU ( 等于 ) 、 LSS ( 小于 ) 、 GTR ( 大于 ) GEQ( 大于等于 ) 、 LEQ( 小于等于 ) 、 NEQ( 不等)

    l?????? 命令行擴(kuò)展版本

    CMDEXTVERSION <n>

    ????????????? 當(dāng)命令擴(kuò)展版本號大于或等于 <n> 時(shí)為真,該值最低版本為 1

    l?????? 變量定義

    DEFINE <var-name>

    ????????????? 如果變量的定義存在則為真

    ?????????????

    則自動增加一下變量定義

    -????????? %ERRORLEVEL% 定義為當(dāng)前的即上次命令行執(zhí)行產(chǎn)生的 errorlevel (一定有定義)

    -????????? %CMDCMDLINE% 定義為上次傳遞給命令解釋器 (cmd.exe) 的未經(jīng)處理的原始命令行。 (如果 %CMDCMDLINE% 未被定義,否則不影響原始值)

    -????????? %CMDEXTVERSION% 定義為當(dāng)前命令擴(kuò)展的版本號(如果 % CMDEXTVERSION % 未被定義,否則不影響原始值)

    ?

    如果使用 ELSE 語句應(yīng)當(dāng)用以下形式,因?yàn)楸仨氂脧?fù)合語句或 newline 來結(jié)束 <command>:

    IF [NOT] <condition> (

    ????? <command>

    ) ELSE IF (

    ????? <command>

    ) ELSE (

    ????? <command>

    )

    或者:

    IF [NOT] <condition> (<command>) ELSE (<command>)

    ?

    5.?????? CHOICE

    選項(xiàng)分支命令,格式如下:

    CHOICE [/c [<choices>]] [/n] [/cs] [/t <timeout> /d <default>] [/m <msg>]

    其中 /c 選項(xiàng)指定用戶的選擇鍵,默認(rèn)是 yn ,其顯示為:

    [Y, N]?

    ?????? /cs 指定大小寫敏感選擇,默認(rèn)不敏感,如果不敏感則提示選擇鍵都采用大寫字符。

    ?????? /n 隱藏鍵提示信息。

    ?????? /t 指定超時(shí)時(shí)間 (second) ,根據(jù)版本不同可能會顯示遞減的計(jì)時(shí)數(shù)字,默認(rèn)不超時(shí)。

    ?????? /d 超時(shí)后的默認(rèn)選項(xiàng)。

    ?????? /m 指定提示信息,顯示在選擇鍵提示前面。

    注意,該命令不是所有的命令解釋器都支持。

    該命令返回用戶選擇鍵的序號 ( 1 開始 ) 作為 errorlevel 的值 , 可由 IF 語句判斷。

    ?

    6.?????? 如何定義組合語句 ?

    在上述控制語句中,如 DO IF/ELSE 結(jié)構(gòu)中,經(jīng)常會嵌入一段代碼,由幾條語句構(gòu)成,這時(shí)候需要定義組合語句,甚至在有些結(jié)構(gòu)中,例如 IF/ELSE ,即使只有一條語句也寫成組合語句的形式。組合語句定義如下:

    (

    <command-lines>

    )

    ?????? 特別是 <command-lines> 為空,即可以定義空語句。

    ?????? 多個命令在一行時(shí)需要用 & 來分隔。
    posted on 2008-03-31 16:17 懵懵燈燈 閱讀(753) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 青青视频观看免费99| 免费无码又爽又刺激高潮软件 | 亚洲AV日韩AV天堂久久| 亚洲一区二区三区四区在线观看| 亚洲精彩视频在线观看| 亚洲日韩中文字幕无码一区| 日本特黄特色AAA大片免费| 最好免费观看高清在线| 成年人网站免费视频| 日产国产精品亚洲系列| 亚洲伊人久久大香线蕉综合图片 | 久久精品国产精品亚洲蜜月| 亚洲伊人久久大香线焦| 特级aaaaaaaaa毛片免费视频| 免费无码作爱视频| 最新中文字幕电影免费观看| 亚洲欧洲日产国码高潮αv| 久久精品国产亚洲av麻豆小说| 亚洲综合av一区二区三区| 一区二区三区免费视频网站| 2021精品国产品免费观看| 国产免费av片在线播放| 亚洲va久久久噜噜噜久久天堂| 国产精品亚洲午夜一区二区三区| 日本精品久久久久久久久免费| 4444www免费看| 亚洲 另类 无码 在线| 亚洲美女视频网站| 男女猛烈xx00免费视频试看| 99久久免费看国产精品| 亚洲国产综合精品中文字幕| 亚洲导航深夜福利| 一级成人a免费视频| 国产h视频在线观看免费| 夜夜春亚洲嫩草影院| 中文字幕无码亚洲欧洲日韩| a毛片免费播放全部完整| 日韩人妻无码免费视频一区二区三区| 亚洲国产精品无码专区影院| 99亚洲乱人伦aⅴ精品| 24小时在线免费视频|