天天看點

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

1. @echo off

@echo off:關閉回顯,執行後不會一條一條的顯示執行的指令,與之相比對的有@echo on

未關閉回顯

echo hahaha

pause

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

關閉回顯

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

2. pause

pause 暫停指令,執行時會在指令行視窗顯示“請按任意鍵繼續...”,并等待你按鍵;

pause > nul 暫停指令,隻是不會顯示“請按任意鍵繼續...”

3. echo

echo:輸出指令,在指令視窗中輸出内容,在echo後的任何内容都會輸出,無需使用單引号或雙引号

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

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個字元  :~

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

去掉後n個字元  :~0,-字元數

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

從第幾個字元開始截取一定的長度  :~1,2  從第1位(索引位從0開始)開始截取2個字元

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

從第幾個字元開始截取一定的長度  :~1,-2  前面去掉1位數,後面去掉2位數(這段了解不清楚)

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

取最後的n位數

%變量:~-n%

從後開始,去掉最後的n位數

%變量:~,-n%

【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

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後如果沒有指定目錄,則使用目前目錄)
【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd
【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd
  • /d:用于搜尋目錄或檔案夾(不搜尋檔案),并且不會搜尋子目錄
【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd
  • 擷取特定路徑下的目錄名,注意特定路徑的斜杠方向,路徑名不能為中文

      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 擷取目前目錄下的檔案或檔案夾

  1. dir: 擷取目前目錄下的檔案或檔案夾,包含檔案的時間、大小、檔案名;
  2. dir /b: 擷取目前目錄下的檔案或檔案夾,去掉檔案的大小、時間屬性,僅擷取名稱;
  3. dir /ad/b  或dir /a:d/b : 擷取目前目錄下的目錄名。(不擷取檔案名)
  4. dir /a-d/b 或 dir /a:a/b:擷取目前目錄下的檔案名。(不擷取目錄名)
  5. dir /s/b: 擷取目前目錄及子目錄下的所有檔案名或檔案夾名
  6. dir /s/b 關鍵詞或含通配符的關鍵詞:查找名稱包含關鍵詞的所有檔案名或檔案夾名
【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)

  1. %%~ni: 代表檔案名
  2. %%~xi: 代表檔案擴充名
  3. %%~nxi: 代表檔案名和擴充名,不包含盤符及路徑資訊
  4. %%~fi: 擷取檔案的整個路徑及檔案名
  5. %%~pi:表示擷取該檔案的路徑,不包含盤符的資訊
  6. %%~di:表示擷取該檔案所在的盤符
  7. %%~ti:表示擷取該檔案的上次修改時間
  8. %%~zi:表示擷取該檔案的大小
【BAT】bat批處理筆記15. for 循環中的 /r /d 擴充參數16. dir 擷取目前目錄下的檔案或檔案夾17. %%~ni (這裡的i是循環變量名,若循環變量為a,則相應的為%%~na)18. setlocal和endlocal19. 判斷字元串是否包含某字元串20. pushd 和 popd

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程式設計中很有用)

繼續閱讀