1. @echo off
@echo off:關閉回顯,執行後不會一條一條的顯示執行的指令,與之相比對的有@echo on
未關閉回顯
echo hahaha
pause
關閉回顯
2. pause
pause 暫停指令,執行時會在指令行視窗顯示“請按任意鍵繼續...”,并等待你按鍵;
pause > nul 暫停指令,隻是不會顯示“請按任意鍵繼續...”
3. echo
echo:輸出指令,在指令視窗中輸出内容,在echo後的任何内容都會輸出,無需使用單引号或雙引号
4. 設定變量 set set /a 取變量 !變量名!
- 設定變量 set n=1 ; 設定變量n,并初始化為1;
- 取變量的值:使用 “!變量名!”的方法擷取變量的值,使用雙感歎号的方式,需在執行檔案前加上 @echo off&setlocal enabledelayedexpansion
- set /a : 執行數學計算 set /a n+=1 執行n=n+1
- set /p : 提示使用者數 set /p n=輸入:
@echo off&setlocal enabledelayedexpansion rem 如要是使用雙感歎号取變量的值,這句是必須的
set n=1 rem 聲明變量n并初始化為1
set /p n=輸入: rem 提示使用者輸入,并将使用者輸入的值賦給變量n
set /a n+=1 rem 執行數學計算n=n+1,“+=” 相當于“=n+1”
echo !n! rem 顯示變量n的值
pause > nul
在循環體内使用變量需要啟用變量延遲setlocal enabledelayedexpansion
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1 1 10) do (
set var=%%i
echo !var! 啟用延緩環境變量
echo %var% 未啟用延緩環境變量
)
5. 去掉第n個字元,去掉最後n個字元,截取幾位數
去掉前n個字元 :~
去掉後n個字元 :~0,-字元數
從第幾個字元開始截取一定的長度 :~1,2 從第1位(索引位從0開始)開始截取2個字元
從第幾個字元開始截取一定的長度 :~1,-2 前面去掉1位數,後面去掉2位數(這段了解不清楚)
取最後的n位數
%變量:~-n%
從後開始,去掉最後的n位數
%變量:~,-n%
6. 注釋符号 rem 或 ::
7. 重定向 >
> ,将“>” 左側指令執行的結果 寫入 “>” 右側的檔案中,若檔案不存在則自動建立檔案。
@echo off&setlocal enabledelayedexpansion
dir /s /l /b > 2.txt
pause > nul
羅列目前及子目錄下的所有檔案(及目錄),寫入到2.txt文檔中。
8. md 建立目錄
md 123 建立一個名為123的檔案夾
9. 批處理符号 | & && ||
- & command1 & command2 指令連接配接符,用來分隔一個指令行中的多個指令,先運作第一個指令,再運作第二個指令
@echo 第一個指令&@echo 第二個指令
- && command1 && command2 隻有在&&前面的語句command1運作成功,則運作&&後面command2的語句
- || command1 || command2 隻有在|| 前面的語句command1運作失敗後,才運作 || 後面的command2的語句
- | 管道符,就是讓前一指令的輸出當做後一指令的輸入,即前一指令的結果當做一個參數傳遞給後面指令進行處理
10. goto 跳轉到特定行
- goto:eof 相當于exit,結束程式
- goto:特定标簽, 跳轉到其他指令行語句
@echo off
set /p input=請輸入字母A或B:
if "%input%"=="A" goto A
if "%input%"=="B" goto B
pause
exit
:A
echo 您輸入的字母是A
pause
exit
:B
echo 您輸入的字母是B
pause
exit
11. CALL 調用程式段
調用程式段(函數),可傳遞參數
@echo off
for /l %%i in (1001,1,1017) do (
call :MDIR %%i rem 傳遞實參
)
goto:eof
:MDIR
set b=%1 rem 擷取第一個形參的值并賦給變量b
md "hello %b:~1,4%"
12. move 移動檔案或檔案夾
@echo off
move G:\YFYF\10年\2012-10年-379 G:\YFYF\10年\2004
pause
13. md 建立目錄
@echo off
for /l %%i in (1,1,10) do (
md G:\批處理練習\1\%%i
)
pause
14. md 建立目錄
1>nul 意思是不顯示指令運作的正确提示
2>nul 是不顯示錯誤提示
一起就是 正确錯誤的都不顯示
>是重定向符号
nul是空裝置的意思
把提示輸入到空裝置就不顯示了
重定向你可以了解為 輸入到 的意思
15. for 循環中的 /r /d 擴充參數
- /r : 主要用于搜尋指定路徑及其子目錄中符合要求的檔案,(\r後如果沒有指定目錄,則使用目前目錄)
- /d:用于搜尋目錄或檔案夾(不搜尋檔案),并且不會搜尋子目錄
- 擷取特定路徑下的目錄名,注意特定路徑的斜杠方向,路徑名不能為中文
for /d %%i in (C:/Users/pytxf/Desktop/SAOMIAO/*) do echo %%i
- 擷取目前目錄下的特定檔案夾下的目錄名
for /d %%i in (圖檔清單/*) do echo %%i
for /f "delims=" %%a in ('dir /ad/b "新掃描件"') do (
16. dir 擷取目前目錄下的檔案或檔案夾
- dir: 擷取目前目錄下的檔案或檔案夾,包含檔案的時間、大小、檔案名;
- dir /b: 擷取目前目錄下的檔案或檔案夾,去掉檔案的大小、時間屬性,僅擷取名稱;
- dir /ad/b 或dir /a:d/b : 擷取目前目錄下的目錄名。(不擷取檔案名)
- dir /a-d/b 或 dir /a:a/b:擷取目前目錄下的檔案名。(不擷取目錄名)
- dir /s/b: 擷取目前目錄及子目錄下的所有檔案名或檔案夾名
- dir /s/b 關鍵詞或含通配符的關鍵詞:查找名稱包含關鍵詞的所有檔案名或檔案夾名
17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)
- %%~ni: 代表檔案名
- %%~xi: 代表檔案擴充名
- %%~nxi: 代表檔案名和擴充名,不包含盤符及路徑資訊
- %%~fi: 擷取檔案的整個路徑及檔案名
- %%~pi:表示擷取該檔案的路徑,不包含盤符的資訊
- %%~di:表示擷取該檔案所在的盤符
- %%~ti:表示擷取該檔案的上次修改時間
- %%~zi:表示擷取該檔案的大小
18. setlocal和endlocal
setlocal和endlocal一般是搭配使用的,setlocal和endlocal指令執行結果是讓dao中間的程式對版于系統變量的權改變隻在程式内起作用,不會影響整個系統級别。
19. 判斷字元串是否包含某字元串
@echo off
set a=55544333
set c=6666dfsfds
set b=44
echo %a%| findstr %b% >nul && (
echo %a%包含%b%
) || (
echo %a%不包含%b%
)
echo %c%| findstr %b% >nul && (
echo %c%包含%b%
) || (
echo %c%不包含%b%
)
pause
20. pushd 和 popd
切換目前目錄
@echo off
c: & cd\ & md mp3 #在 C:\ 建立 mp3 檔案夾
md d:\mp4 #在 D:\ 建立 mp4 檔案夾
cd /d d:\mp4 #更改目前目錄為 d:\mp4
pushd c:\mp3 #儲存目前目錄,并切換目前目錄為 c:\mp3
popd #恢複目前目錄為剛才儲存的 d:\mp4
一般用處不大,在目前目錄名不确定時,會有點幫助。(dos程式設計中很有用)