顯示信息,或將命令回顯打開或關上。編程
ECHO [ON | OFF]windows
ECHO [message]測試
要顯示當前回顯設置,鍵入不帶參數的 ECHO。spa
暫停批處理程序,並顯示如下消息:命令行
請按任意鍵繼續. . .code
清除屏幕。token
在批處理文件或 CONFIG.SYS 里加上註解或說明。ip
REM [comment]rem
PS:其實能夠用"::"代替"REM",能夠提升執行速度,不過REM的兼容性更好,我仍是建議你們用rem註釋字符串
1.給變量賦值(撤銷)
@echo off set str=My name is Xiao echo %str% rem 批處理中的變量通常須要用%來擴展,詳見特殊符號一節 pause>nul
@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)
@echo off set /a num=(12*2)+(13*4) echo (12x2)+(13x4)=%num% pause>nul
() - 分組 ! ~ - - 一元運算符 * / % - 算數運算符 + - - 算數運算符 << >> - 邏輯移位 - 按位「與」 ^ - 按位「異」 | - 按位「或」 = *= /= %= += -= - 賦值 &= ^= |= <<= >>= , - 表達式分隔符
4.顯示當前已定義變量
@echo off @set @pause>nul
1.IF的第一種用法,比較字符串
@echo off set /p PW=請輸入密碼: if %PW%==bat ( echo YES! ) ELSE ( Rem [else] 爲可選參數,表示不然,即若是變量PW等於bat則輸出YES!不然輸出NO! echo NO! ) pause>nul
2.IF的第二種用法,比較數字
@echo off 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
5.IF的第五種用法,判斷返回值(ERRORLEVEL)
@echo off echo 1234>>test.txt if errorlevel 0 ( echo 寫入成功! ) else echo 寫入失敗 pause>nul
將 cmd.exe 導向到批處理程序中帶標籤的行。
GOTO label
label 指定批處理程序中用做標籤的文字字符串。
標籤必須單獨一行,而且以冒號打頭。
若是命令擴展名被啓用,GOTO 會以下改變:
GOTO 命令如今接受目標標籤 :EOF,這個標籤將控制轉移到當前
批腳本文件的結尾。不定義就退出批腳本文件,這是一個容易的
辦法。有關能使該功能有用的 CALL 命令的擴展名描述,請鍵入
CALL /?。
@echo off set /p pw=請輸入密碼: if "%pw%"=="bathome" goto yes goto :eof rem 未定義的:eof會退出腳本文件 :yes echo 密碼正確! pause>nul
1.FOR
對一組文件中的每個文件執行某個特定命令。
FOR%variableIN (set) DO command [command-parameters]
%variable 指定一個單一字母可替換的參數。
(set) 指定一個或一組文件。可使用通配符。
command 指定對每一個文件執行的命令。
command-parameters
爲特定命令指定參數或命令行開關。
@echo off for %%i in (*.txt) do echo %%i ::這段代碼會顯示當前文件夾下全部的txt文件 pause>nul
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 1 5) do echo %%a pause>nul
4.FOR /D
FOR /D %variable IN (set) DO command [command-parameters]
若是集中包含通配符,則指定與目錄名匹配,而不與文件
名匹配。
這個命令的用法和上面差很少,只不過是枚舉目錄名,不詳解了
5.FOR /F
or /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
for /f 默認以空格爲分隔符,將每一行分割爲幾個元素,而tokens就表示取第幾個元素.但假如咱們要取的不是一個元素呢?須要所有顯示出來怎麼辦?
tokens=* 表示取全部元素,用%%i輸出
@echo off rem test.txt已經有了,就不生成了 for /f "delims=*" %%i in (test.txt) do echo %%i pause>nul
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
~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 ===================================================
1. IF-EXIST
@echo off IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist pause>nul
若是C:\存在AUTOEXEC.BAT文件,那麼它的內容就會被顯示出來,若是不存在,批處理就會提示你該文件不存在。
說明: (1) IF EXIST 是用來測試文件是否存在的,格式爲 IF EXIST [路徑+文件名] 命令 (2) test2.bat文件中的%1是參數,DOS容許傳遞9個批參數信息給批處理文件,分別爲%1~%9(%0表示test2命令自己) ,這有點象編程中的實參和形參的關係,%1是形參,AUTOEXEC.BAT是實參。
二、IF-ERRORLEVEL
IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的,注意只是上一個命令的返回值,並且返回值必須依照從大到小次序順序判斷。
@ECHO OFF XCOPY test.BAT D: IF ERRORLEVEL 1 ECHO 文件拷貝失敗 IF ERRORLEVEL 0 ECHO 成功拷貝文件 pause>nul