windous批處理

1.ECHO

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

    ECHO [ON | OFF]windows

    ECHO [message]測試

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

2.PAUSE

    暫停批處理程序,並顯示如下消息:命令行

    請按任意鍵繼續. . .code

3.CLS

    清除屏幕。token

4.REM

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

    REM [comment]rem

    PS:其實能夠用"::"代替"REM",能夠提升執行速度,不過REM的兼容性更好,我仍是建議你們用rem註釋字符串

5.SET

    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

6.IF

    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

7.GOTO

    將 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

8.FOR

    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

相關文章
相關標籤/搜索