Bat 批處理腳本 (常用)
########## Bat 批處理腳本 ##########
=== Content ===
1. Rem 和 ::
Rem 為注釋命令,能回顯。
:: 為符號注釋,不能回顯。
%行內注釋內容% ===== (不常用)(慎用)
注:
回顯:
回顯,就是顯示正在執行的批處理命令及執行的結果等。
不回顯:
與上述回顯,方式相反
例如:
(在cmd上運行結果如下:)
rem hello 在下面會顯示空白的一行
:: hello 在下面不會顯示空白的一行
2. Echo 和 @
@ 字符 始終不回顯,不論你是echo on/off 狀態
@ 放在命令前即關閉回顯
echo
(1)開/關 回顯
echo on/off
(2)顯示當前ECHO設置狀態
echo
(3)輸出提示信息
echo Content
(4)關閉DOS命令提示符
echo off
(5)輸出空行,即相當於輸入一個回車
echo .
(6)答復命令中的提問
格式: ECHO 答復語|命令文件名
例子:
C:>ECHO Y|CHKDSK/F
C:>ECHO Y|DEL A :*.*
(7)建立新文件或增加文件內容
格式:
echo 文件內容 > 文件名 ======= 在文件 中寫入『文件內容』
echo 文件內容 >> 文件名 ======= 在該文件末追加『文件內容』
例子:
C:>ECHO @ECHO OFF>AUTOEXEC.BAT建立自動批處理文件
C:>ECHO C:\CPAV\BOOTSAFE>>AUTOEXEC.BAT向自動批處理文件中追加內容
C:>TYPE AUTOEXEC.BAT顯示該自動批處理文件
(8)向打印機輸出打印內容 或 打印控制碼
格式: echo 打印機控制碼>; PRN
echo 打印內容>;PRN
例子:
下面的例子是向M-1724打印機輸入打印控制碼。<Alt>156是按住Alt鍵在小鍵盤鍵入
156,類似情況依此類推:
C:>ECHO +156+42+116>;PRN(輸入下划線命令FS*t)
C:>ECHO [email=+155@]+155@>;PRN[/email](輸入初始化命令ESC@)
C:>ECHO.>;PRN(換行)
(9)使喇叭鳴響
C:>ECHO ^G
“^G”是在dos窗口中用Ctrl+G或Alt+007輸入,輸入多個^G可以產生多聲鳴響。
使用方法是直接將其加入批處理文件 或 做成批處理文件調用
這里“^G”屬於特殊符號的使用,請看本文后面的章節
-
Pause
(1)暫停 press any key to continue
Pause
(2)自定義停止 提示語
格式:
echo 其他提示語 & pause > nul -
errorlevel
程序運行后返回碼 echo %errorlevel%
用處: 判斷命令是否執行成功
默認值: 0(正確)
出錯 errorlevel 會設置為 1 -
title
更換cmd 窗口名字
用法:
title 新窗口名字 -
color
更改cmd的 前\后景顏色屬性
用法:
color + attrattr 是 兩位的十六進制數,第一位為前景色,第二位則為后景色
0 = 黑色 8 = 灰色
1 = 藍色 9 = 淡藍色
2 = 綠色 A = 淡綠色
3 = 湖藍色 B = 淡淺綠色
4 = 紅色 C = 淡紅色
5 = 紫色 D = 淡紫色
6 = 黃色 E = 淡黃色
7 = 白色 F = 亮白色如果沒有attr 參數,則返回成cmd啟動時的屬性
-
mode
配置系統設備
例子:(更改cmd窗口大小 和 顏色)
mode con cols=80 lines=20 & color f2
-
goto 和 :
":"
用來創建標簽
用法:
":" + 標簽名
例子:
if {%1}{} goto noparms
if "%2""" goto noparms
goto:
跳轉到某標簽
用法:
goto 標簽名例子:
@echo off
:start
set /a var+=1
echo %var%
if %var% leq 3 goto start
pause運行結果:
1
2
3
4 -
start
新開一個程序執行例:
start explorer d:
調用圖形界面打開D盤 -
if
用法:(1)IF [not] ErrorLevel number command (2)IF [not] string1==string2 command (3)IF [not] Exist filename command
例子:
echo off IF EXIST autoexec.bat echo 文件存在! IF not EXIST autoexec.bat echo 文件不存在!
-
%
用法:
(1)%變量名%
引用變量名的值
例子:
set file=“test.txt” rem 注意:變量名file后的=號 和 值不要有空格
(2)%0~%9
表示的是從外部參數引用的值
%0 就是程序本身,或者路徑
%1 第一個參數 ... %9 第9個參數 -
< >& <& 重定向符
@echo off echo 2005-05-01>temp.txt date <temp.txt del temp.txt
這樣就可以不等待輸入直接修改當前日期
>&,將一個句柄的輸出寫入到另一個句柄的輸入中。 <&,剛好和>&相反,從一個句柄讀取輸入並將其寫入到另一個句柄輸出中。
常用句柄:0、1、2,未定義句柄:3—9
1>nul 表示禁止輸出正確的信息
2>nul 表示禁止輸出錯誤信息。
其中的1與2都是代表某個數據流輸入輸出的地址(NT CMD 稱之為句柄,MSDOS稱之為設備)。
句柄0:標准輸入stdin,鍵盤輸入
句柄1:標准輸出stdout,輸出到命令提示符窗口(console,代碼為CON)
句柄2:標准錯誤stderr,輸出到命令提示符窗口(console,代碼為CON)
其中的stdin可被<重定向,stdout可被>、>>重定向。
我們已經知道讀取文本中的內容可以用for命令,
但如果只需要讀取第一行用for命令就有點麻煩。簡單的辦法如下:@echo off set /p str=<%0 echo %str% pause
-
| 命令管道符
格式:cmd1 | cmd2 | cmd3 |...
說明:將第一條命令的結果作為第二條命令的參數來使用
例如:dir C:\|find "txt"
上述命令解釋: 查找C:\ 下 所有匹配的"txt"字符串
-
^ 轉義字符
^相當於C語言的"/" 轉義字符 -
DOS 循環
for 循環:
格式:for %%var in (set) do Command [command-parameters] command-parameters: 有四個參數: /d /l /r /f
-
系統變量
用法:
可以通過 %系統變量名% 查看當前系統變量的值例子: %HOMEPATH%
-
自定義變量
(1)自定義變量
set 變量名=值
(2)手動輸入變量的值 set /p@echo off set /p var=請輸入變量的值 echo %var% pause var變量名 =號右邊的是提示語,不是變量的值
-
if...else... 條件語句
在 if...else 語句中 還有判斷數字的符號:EQU - 等於 NEQ - 不等於 LSS - 小於 LEQ - 小於或等於 GTR - 大於或等於
例子:
IF EXIST filename ( del filename ) ELSE ( echo filename missing )
-
random (隨機數%random%)的應用技巧
例子:
@echo off
setlocal enabledelayedexpansion
for /L %%i in (1 1 5) do (
set /a randomNum=!random!%%100
echo 隨機數:!randomNum!
)
pause