<noframes id="3b3tx"><em id="3b3tx"><strike id="3b3tx"></strike></em>

    <ruby id="3b3tx"><dl id="3b3tx"></dl></ruby>
    <span id="3b3tx"><span id="3b3tx"><strike id="3b3tx"></strike></span></span>

        <dl id="3b3tx"></dl>
          <big id="3b3tx"><track id="3b3tx"></track></big> <mark id="3b3tx"></mark>
            <ol id="3b3tx"></ol>

            <progress id="3b3tx"></progress>

            <th id="3b3tx"><span id="3b3tx"></span></th>
            首頁 > 動漫播報 > 漫展 > 正文

            BAT程序是作用是什么?BAT有什么常用命令?|環球時訊

            迪族網 2023-07-07 16:27:18

            bat程序是作用是什么?

            簡單的說,批處理的作用就是自動的連續執行多條命令。

            這里先講一個最簡單的應用:在啟動wps軟件時,每次都必須執行(“>”前面內容表示DOS提示符):

            C:\>cd wps

            C:\WPS>spdos

            C:\WPS>py

            C:\WPS>wbx

            C:\WPS>wps

            如果每次用WPS之前都這樣執行一遍,還是十分麻煩。不過用批處理,就可以實現將這些麻煩的操作簡單化,首先我們編寫一個runwps.bat批處理文件,內容如下:

            @echo off

            C:

            cd\wps

            spdos

            py

            wbx

            wps

            cd\

            以后,我們每次進入wps,只需要運行runwps這個批處理文件即可。

            BAT有什么常用命令?

            1.ECHO

            顯示信息,或將命令回顯打開或關上。

            ECHO [ON | OFF]

            ECHO [message]

            要顯示當前回顯設置,鍵入不帶參數的 ECHO。

            echo 命令的第一個用法,echo on和echo off

            echo on表示打開回顯,echo off表示關閉回顯,何為回顯?打開回顯就是執行命令時會把命令顯示出來,關閉回顯反之.

            echo 命令的第二個用法,echo message,這個很簡單,就是顯示后面的信息

            echo 命令第三個用法,顯示當前回顯設置,就是顯示回顯打開或關閉

            echo也可以輸出文件。下面再說。

            以下的這段代碼可以讓你很好地理解echo的用法(包括如何用echo輸出空行)

            echo 這是沒有關閉回顯

            echo;

            echo

            echo off

            echo 這是關閉了回顯

            echo;

            echo

            pause

            二.PAUSE

            暫停批處理程序,并顯示以下消息:

            請按任意鍵繼續. . .

            這個命令沒有什么好說的,要暫停時直接pause就行了

            三.CLS

            清除屏幕。

            CLS

            這個命令也沒有什么好說的,清屏,自己試一次就知道了

            四.REM

            在批處理文件或 CONFIG.SYS 里加上注解或說明。

            REM [comment]

            這個命令同樣沒什么好說的,用法就是rem 注釋

            PS:其實可以用"::"代替"REM",可以提高執行速度,不過REM的兼容性更好,我還是建議大家用rem注釋

            五.SET

            一.給變量賦值(撤銷)

            例1:

            @echo off

            set str=My name is Xiao

            echo %str%

            rem 批處理中的變量一般需要用%來擴展,詳見特殊符號一節

            pause>nul

            例2:

            @echo off

            set str=ABCDEFGHIJKLMN

            echo %str%

            set str=

            echo;%str%

            rem 還記得加";"可以實現什么效果嗎?一個空行,為什么要這么做呢?想不出來的話去掉這個";"試試

            pause>nul

            上面的例子中,一個是給變量賦值,一個是撤銷變量的值

            2.等待用戶輸入數據(開關/P)

            例:

            @echo off

            set /p name=請輸入你的姓名:

            set /p age=請輸入你的年齡(純數字):

            echo 所以,%name%今 年%age%歲咯?

            pause>nul

            3.計算(開關/A)

            例1:

            @echo off

            set /a num=(12*2)+(13*4)

            echo (12x2)+(13x4)=%num%

            pause>nul

            例2:

            @echo off

            set /p num=請輸入一個數字(不要超過2147483647):

            REM 批處理能處理的數字不能超過32位(二進制)

            set /a num*=2

            echo 這個數字的兩倍是%num%

            pause>nul

            附:Set /a num*=2與set /a num=num*2等價

            () - 分組

            ! ~ - - 一元運算符

            * / % - 算數運算符

            + - - 算數運算符

            << >> - 邏輯移位

            - 按位“與”

            ^ - 按位“異”

            | - 按位“或”

            = *= /= %= += -= - 賦值

            &= ^= |= <<= >>=

            , - 表達式分隔符

            set /a支持多行表達式并列,比如set /a num1=1+1,num2=1+2,num3=1+3

            并且set /a不需要擴展變量,比如set /a num=%num2%+%num3%與set /a num=num2+num3等價

            以上內容僅為基礎教程

            4.顯示當前已定義變量

            例:

            @set

            @pause>nul

            是不是很簡單?其實它還有更高級的用法呢

            @set a

            @pause>nul

            @set s

            @pause>nul

            你們發現什么了嗎??它的用法就是這些,不用多說了

            六.IF

            1.IF的第一種用法,比較字符串

            例:

            set /p PW=請輸入密碼:

            if %PW%==bat (

            echo YES!

            ) ELSE (

            Rem [else] 為可選參數,表示否則,即如果變量PW等于bat則輸出YES!否則輸出NO!

            echo NO!

            )

            pause>nul

            通過set /p和if可以實現一個簡單的密碼判斷,當然這個密碼判斷可以很輕易地被破解,仔細動腦筋想一想,該怎么破解呢.

            不過這個密碼判斷尚有不足之處,假如我們什么都不輸入直接回車,便會提示錯誤,那該怎么辦呢?很簡單,只要加上雙引號(其它的符號也行)就行了=>if "%PW%"=="bat"

            2.IF的第二種用法,比較數字

            例:

            set /p num1=請第一個輸入數字:

            set /p num2=請第二個輸入數字:

            if not %num1% LSS %num2% (

            rem lss表示小于

            rem [not]為可選參數,表示非,即如果變量num1不小于變量num2就輸出第一個數字大,否則輸出第二個數字大

            echo 第一個數字大

            ) ELSE (

            echo 第二個數字大

            )

            pause>nul

            這段代碼可以實現一個簡單的判斷,不過尚有不足之處-----如果這兩個數字相等呢,這就要請出我們的else if啦(當然你也可以用幾個if來判斷)

            set /p num1=請第一個輸入數字:

            set /p num2=請第二個輸入數字:

            if "%num1%" gtr "%num2%" (

            echo 第一個數字大

            ) ELSE if "%num1%" EQU "%num2%" (

            echo 一樣大

            ) ELSE (

            echo 第二個數字大

            )

            pause>nul

            ------比較運算符-----

            EQU - 等于

            NEQ - 不等于

            LSS - 小于

            LEQ - 小于或等于

            GTR - 大于

            GEQ - 大于或等于

            3.IF的第三種用法,檢測文件(夾)是否存在

            例:

            @echo off

            if exist C:\windows (

            echo 你的C盤有windows文件(夾^)

            ) else (

            echo 你的C盤沒有windows文件(夾^)

            )

            pause>nul

            "^"為轉義符號,在特殊符號一節再作講解

            4.IF的第四種用法,檢測變量是否被定義

            例:

            @echo off

            set var=aiwozhonghua

            if defined var (

            echo 變量var已被定義,它的值為%var%

            ) else (

            echo 變量var沒有被定義

            )

            pause>nul

            去掉第一行的set看看執行結果有什么不同,你明白它的用法了嗎?

            5.IF的第五種用法,判斷返回值(ERRORLEVEL)

            要判斷返回值,首先要理解返回值是個什么概念,批處理中的返回值一般表示了上個命令的執行結果(成功/失敗/等)

            每個命令執行完畢后返回值都會做相應的更改,一般返回值為0表示成功,1表示失敗,有一些第三方的返回值比較特殊(如Choice.exe,Tmos.exe,Cmos.exe),在這里就不講解了

            例:

            @echo off

            echo;>>%systemroot%\test.txt

            if errorlevel 0 ( echo 寫入成功! ) else echo 寫入失敗

            pause>nul

            這段代碼嘗試向%systemroot%\system32\寫入數據,如果權限不夠或殺毒軟件攔截就會寫入失敗,這時就會顯示"寫入失敗".不知道%systemroot%表示了什么?單獨鍵入set自己仔細看一下結果.

            不過看到后面你會發現這段代碼還有更簡便的寫法

            注:用 if errorlevel判斷返回值時要將返回值從大到小排列

            例:

            @echo off

            choice /C:ABC /n "A/B/C"

            if errorlevel 3 echo You choose the C

            if errorlevel 2 echo You choose the B

            if errorlevel 1 echo You choose the A

            pause>nul

            七.GOTO

            將 cmd.exe 導向到批處理程序中帶標簽的行。

            GOTO label

            label 指定批處理程序中用作標簽的文字字符串。

            標簽必須單獨一行,并且以冒號打頭。

            如果命令擴展名被啟用,GOTO 會如下改變:

            GOTO 命令接受目標標簽 :EOF,這個標簽將控制轉移到當前

            批腳本文件的結尾。不定義就退出批腳本文件,這是一個容易的

            辦法。有關能使該功能有用的 CALL 命令的擴展名描述,請鍵入

            CALL /?。

            label是什么?這可不是命令label,它指的是標簽,標簽是啥?見例子

            例:

            @echo off

            set /p pw=請輸入密碼:

            if "%pw%"=="bathome" goto yes

            goto :eof

            rem 未定義的:eof會退出腳本文件

            :yes

            echo 密碼正確!

            pause>nul

            這是一個更加完整的密碼判斷,仔細閱讀并執行這行代碼,你知道標簽是什么了嗎,沒錯,那個:yes就是標簽了!

            標簽的格式

            :標簽名

            關掉回顯以后你有沒有發現什么?沒錯,標簽所在的那一行沒有被執行,這就是為什么::比rem更快的原因了,但是標簽不能被使用在一個語句的內部,主要就是被括號括起來的語句(是的,被括號括起來的語句被看作一個整體),因此::的兼容性沒有rem那么好

            附:"::"其實就是不規范的標簽名...

            八.FOR

            1.FOR

            對一組文件中的每一個文件執行某個特定命令。

            FOR%variableIN (set) DO command [command-parameters]

            %variable 指定一個單一字母可替換的參數。

            (set) 指定一個或一組文件??梢允褂猛ㄅ浞?。

            command 指定對每個文件執行的命令。

            command-parameters

            為特定命令指定參數或命令行開關。

            例:

            @echo off

            for %%i in (*.txt) do echo %%i

            pause>nul

            這段代碼會顯示當前文件夾下所有的txt文件

            @echo off

            for %%i in (菜 芽 小 公 主) do echo %%i

            pause>nul

            這段代碼會顯示

            注:%%i為for輸出專用變量格式,其中i可以是a/A/0-z/Z/9和一些符號什么的(如! # 不過不建議使用),在cmd中只能用一個%

            2.FOR /L

            FOR /L %variable IN (start,step,end) DO command [command-parameters]

            該集表示以增量形式從開始到結束的一個數字序列。

            因此,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生

            序列 (5 4 3 2 1)。

            例:

            @echo off

            for /L %%a in (1 2 1000) do echo %%a

            pause>nul

            這個用法很簡單,沒有什么要講解的,從這段代碼主要是看出了逗號可以省略.當然還有一些稀奇古怪的用法為了防止新手弄混在這里就不講解了

            3.FOR /R

            FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

            檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的

            FOR 語句。如果在 /R 后沒有指定目錄,則使用當前

            目錄。如果集僅為一個單點(.)字符,則枚舉該目錄樹。

            這個命令同樣有一些看起來很奇怪的用法,為了防止新手迷糊就只講解基礎的

            例:

            @echo off

            for /r C:\Windows\system32 %%i in (*) do echo %%i

            pause>nul

            這段代碼枚舉了C:\Windows\system32下所有的文件,包括子文件夾里的

            4.FOR /D

            FOR /D %variable IN (set) DO command [command-parameters]

            如果集中包含通配符,則指定與目錄名匹配,而不與文件

            名匹配。

            這個命令的用法和上面差不多,只不過是枚舉目錄名,不詳解了

            5.FOR /F

            for /f是一個非(喪)常(心)復(病)雜(狂)的命令...

            讓我們從它的第一個用法來講:

            FOR /F ["options"] %variable IN (file-set) DO command [command-parame]

            例:

            @echo off

            echo 1,1 2,1 3,1 4,1>>test.txt

            echo A1,2 2,2 3,2 4,2>>test.txt

            echo 1,3 2,3 3,3 4,3>>test.txt

            echo A1,4 2,4 3,4 4,4>>test.txt

            rem 以上代碼在當前文件夾下生成了一個test.txt,打開看看?

            For /F %%i In (test.txt) Do Echo %%i

            pause>nul

            For /F "tokens=2" %%i In (test.txt) Do Echo %%i

            pause>nul

            For /F "tokens=3" %%i In (test.txt) Do Echo %%i

            pause>nul

            For /F "tokens=4" %%i In (test.txt) Do Echo %%i

            pause>nul

            我想執行完這個bat,再分析一下結果和代碼,聰明的你一定了解了tokens的用處

            for /f 默認以空格為分隔符,將每一行分割為幾個元素,而tokens就表示取第幾個元素.但假如我們要取的不是一個元素呢?需要全部顯示出來怎么辦?

            tokens=* 表示取所有元素,用%%i輸出

            tokens=1,2,3,4或tokens=1-4 然后用%%i或%%i,%%j,%%k,%%l 輸出

            其實我們還有其他的方法,比如請出delims參數

            例:

            @echo off

            rem test.txt已經有了,就不生成了

            for /f "delims=*" %%i in (test.txt) do echo %%i

            pause>nul

            delims是個啥玩意兒?其實這就是分割符的設定,默認以空格為分隔符,你可以將分隔符設置成其他的,你的文本就不會被分割了,delims同樣支持多個分隔符,格式delims=第一個分隔符,第二個分隔符,第三個分隔符

            啊哈,還有一個skip和eol,skip表示忽略前幾行,比如skip=10表示忽略這個文本的前十行,我這個文本只有4行,如果你加上skip=10的話就什么都不會輸出了

            eol表示忽略以某個符號開頭的行,比如eol=A,當某一行的開頭是A的時候,這一行就不會被處理,不過支持設置一個符號

            for /f同也可以處理字符串

            FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

            字符串需要用雙引號引起來,其余用法一樣,不過這里就要講到usebackq參數了,for /f是支持處理多個文件的,文件直接用空格隔開(某些符號也可以),假如文件名中含有空格怎么辦呢?那好像只能用雙引號引起來了,但是用雙引號引起來會被識別成字符串的,這時就要請出usebackq參數了,加上這個參數,帶引號的字符串也會被識別為文件~

            FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

            用for /f來處理命令執行的結果,命令要用單引號引起來

            例:

            @echo off

            for /f "skip=3" %%i in ('tasklist') do echo;%%i

            pause>nul

            這段代碼就處理了命令ipconfig的執行結果,單獨鍵入tasklist看會出現什么?

            ================================================

            ~I - 刪除任何引號("),擴充 %I

            %~fI - 將 %I 擴充到一個完全合格的路徑名

            %~dI - 僅將 %I 擴充到一個驅動器號

            %~pI - 僅將 %I 擴充到一個路徑

            %~nI - 僅將 %I 擴充到一個文件名

            %~xI - 僅將 %I 擴充到一個文件擴展名

            %~sI - 擴充的路徑只含有短名

            %~aI - 將 %I 擴充到文件的文件屬性

            %~tI - 將 %I 擴充到文件的日期/時間

            %~zI - 將 %I 擴充到文件的大小

            %~$PATH:I - 查找列在路徑環境變量的目錄,并將 %I 擴充

            到找到的第一個完全合格的名稱。如果環境變量名

            未被定義,或者沒有找到文件,此組合鍵會擴充到

            空字符串

            組合修飾符來得到多重結果:

            %~dpI - 僅將 %I 擴充到一個驅動器號和路徑

            %~nxI - 僅將 %I 擴充到一個文件名和擴展名

            %~fsI - 僅將 %I 擴充到一個帶有短名的完整路徑名

            %~dp$PATH:i - 查找列在路徑環境變量的目錄,并將 %I 擴充

            到找到的第一個驅動器號和路徑。

            %~ftzaI - 將 %I 擴充到類似輸出線路的 DIR

            ===================================================

            這些不多說了,自己用for /r命令輸出的時候把%%i改成%%~nxi之類的試一試就理解了

            九.批處理示例

            1. IF-EXIST

            1)

            首先用記事本在C:\建立一個test1.bat批處理文件,文件內容如下:

            @echo off

            IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT

            IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist

            然后運行它:

            C:\>TEST1.BAT

            如果C:\存在AUTOEXEC.BAT文件,那么它的內容就會被顯示出來,如果不存在,批處理就會提示你該文件不存在。

            2)

            接著再建立一個test2.bat文件,內容如下:

            @ECHO OFF

            IF EXIST \%1 TYPE \%1

            IF NOT EXIST \%1 ECHO \%1 does not exist

            執行:

            C:\>TEST2 AUTOEXEC.BAT

            該命令運行結果同上。

            說明:

            (1) IF EXIST 是用來測試文件是否存在的,格式為

            IF EXIST [路徑+文件名] 命令

            (2) test2.bat文件中的%1是參數,DOS允許傳遞9個批參數信息給批處理文件,分別為%1~%9(%0表示test2命令本身) ,這有點象編程中的實參和形參的關系,%1是形參,AUTOEXEC.BAT是實參。

            (3) 更進一步的,建立一個名為TEST3.BAT的文件,內容如下:

            @echo off

            IF "%1" == "A" ECHO XIAO

            IF "%2" == "B" ECHO TIAN

            IF "%3" == "C" ECHO XIN

            如果運行:

            C:\>TEST3 A B C

            屏幕上會顯示:

            XIAO

            TIAN

            XIN

            如果運行:

            C:\>TEST3 A B

            屏幕上會顯示

            XIAO

            TIAN

            在這個命令執行過程中,DOS會將一個空字符串指定給參數%3。

            2、IF-ERRORLEVEL

            建立TEST4.BAT,內容如下:

            @ECHO OFF

            XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷貝失敗

            IF ERRORLEVEL 0 ECHO 成功拷貝文件

            然后執行文件:

            C:\>TEST4

            如果文件拷貝成功,屏幕就會顯示“成功拷貝文件”,否則就會顯示“文件拷貝失敗”。

            IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的,注意只是上一個命令的返回值,而且返回值必須依照從大到小次序順序判斷。因此下面的批處理文件是錯誤的:

            @ECHO OFF

            XCOPY C:\AUTOEXEC.BAT D:\

            IF ERRORLEVEL 0 ECHO 成功拷貝文件

            IF ERRORLEVEL 1 ECHO 未找到拷貝文件

            IF ERRORLEVEL 2 ECHO 用戶通過ctrl-c中止拷貝操作

            IF ERRORLEVEL 3 ECHO 預置錯誤阻止文件拷貝操作

            IF ERRORLEVEL 4 ECHO 拷貝過程中寫盤錯誤

            無論拷貝是否成功,后面的:

            未找到拷貝文件

            用戶通過ctrl-c中止拷貝操作

            預置錯誤阻止文件拷貝操作

            拷貝過程中寫盤錯誤

            都將顯示出來。

            相關推薦
            24小時熱聞
            精彩圖片
            国产亚洲色婷婷久久99精品91
            <noframes id="3b3tx"><em id="3b3tx"><strike id="3b3tx"></strike></em>

              <ruby id="3b3tx"><dl id="3b3tx"></dl></ruby>
              <span id="3b3tx"><span id="3b3tx"><strike id="3b3tx"></strike></span></span>

                  <dl id="3b3tx"></dl>
                    <big id="3b3tx"><track id="3b3tx"></track></big> <mark id="3b3tx"></mark>
                      <ol id="3b3tx"></ol>

                      <progress id="3b3tx"></progress>

                      <th id="3b3tx"><span id="3b3tx"></span></th>