ECHO 和 @
打開回顯或關閉請求回顯功能,或顯示消息。如果沒有任何參數,echo 命令將顯示當前回顯設置
echo
echo on
echo 第一個批處理
echo off
echo 第一個批處理
加@代表不顯示當前行命令自身,我們習慣上不顯示回顯,所以通常情況下這樣寫
@echo off
echo 第一個批處理
REM 和 ::
rem
是 註釋命令,它並不會被執行,只是起一個註釋的作用,便於別人閱讀和你自己日後修改。會回顯,受 echo on 和 echo off 控制
::
也是註釋,但不會回顯。不建議使用
所以如果我們把回顯打開
@echo on
rem 這是一條註釋
:: 這也是一條註釋
echo Hello World
PAUSE
暫停命令。運行 Pause 命令時,將顯示下面的消息:Press any key to continue. . .(或:請按任意鍵繼續. . .)
@echo off
echo 端午
pause
echo 快樂
@echo off
echo 端午
echo 快樂 & pause > nul
echo 在家
pause
echo 待著吧
可以注意到 echo 快樂 & pause > nul
時沒有輸出。因爲已經把結果輸出重定向一個空設備,讓命令處理結果不顯示了2
TITLE、COLOR、MODE
title
cmd窗口顯示的標題
color
cmd控制檯顯示的顏色,前一位數字表示背景色,後一個字母則爲前景。每個數字可以爲以下任何值之一
0 = 黑色 | 1 = 藍色 | 2 = 綠色 | 3 = 湖藍色 |
4 = 紅色 | 5 = 紫色 | 6 = 黃色 | 7 = 白色 |
8 = 灰色 | 9 = 淡藍色 | A = 淡綠色 | B = 淡淺綠色 |
C = 淡紅色 | D = 淡紫色 | E = 淡黃色 | F = 亮白色 |
mode
設置命令行窗口大小,cols是列,lines是行
@echo off
title 今日份批處理
mode con cols=40 lines=10 & color f2
echo Hello World
goto和:
在批處理中允許以":XXX"來構建一個標號,然後用GOTO XXX跳轉到標號:XXX處,然後執行標號後的命令
@echo off
:start
set /a var+=1
echo %var%
if %var% leq 3 goto start
pause
find 和 type
find
:從文件中收索字符串
type
:查看文件內容
@echo off
echo 111aaa > test.txt
echo 222bbb >> test.txt
find "111" test.txt
del test.txt
pause
echo 111 > test.txt
echo 222 >> test.txt
type test.txt | find "111"
del test.txt
pause
start
啓動單獨的"命令提示符"窗口來運行指定程序或命令。如果在沒有參數的情況下使用,start 將打開第二個命令提示符窗口
@echo off
start explorer d:\
echo hello
運行程序發現直接調用資源管理器顯示 d 盤內容,同時後邊的 hello 也輸出了,說明原來程序並沒有關閉
assoc 和 ftype
不同類型的文件,需要不同的文件查看器。例如xlsx表格需要使用Office Excel或WPS,PDF文件需要使用Adobe reader或福昕閱讀器等等。assoc
的作用就是顯示或修改文件擴展名關聯
直接執行 assoc
顯示所有’文件擴展名’關聯,部分執行結果
assoc
顯示.txt代表的文件類型,結果顯示 .txt=txtfile;顯示 .doc 代表的文件類型,結果顯示 Word.Document.8
@echo off
assoc .txt
ftype
:顯示文件類型關聯
如果直接執行 ftype
,部分執行結果
ftype exefile
pushd、popd 和 CALL
這兩個命令的作用都是 切換當前目錄
@echo off
c: & cd\ & md mp3
md d:\mp4
cd /d d:\mp4
pushd c:\mp3
popd
執行這條命令後在 c 盤根目錄創建一個 mp3 文件夾,同時進入到了 c 盤根目錄。cd\
是進入根目錄,md
命令可以創建文件
在 D 盤創建一個 mp4 文件夾
進入到 d:\mp4 文件夾中,使用 /D 命令行開關,除了改變驅動bai器的du當前目錄zhi之外,還可改變當前驅動器
保存當前目錄,也就是 d:\mp4,然後進入 c:\mp3
恢復上次保存的目錄,也就是 d:\mp4
CALL
命令可以在批處理執行過程中調用另一個批處理,當另一個批處理執行完後,再繼續執行原來的批處理。調用本文件內命令段,相當於子程序。被調用的命令段以標籤 :label 開頭
以命令 goto :eof 結尾。結合 pushd 和 popd 看一個栗子
@echo off
Echo 產生一個臨時文件 > tmp.txt
Rem 下行先保存當前目錄,再將c:\windows設爲當前目錄
pushd c:\windows
Call :sub tmp.txt
Rem 下行恢復前次的當前目錄
Popd
Call :sub tmp.txt
pause
Del tmp.txt
exit
:sub
Echo 刪除引號: %~1
Echo 擴充到路徑: %~f1
Echo 擴充到一個驅動器號: %~d1
Echo 擴充到一個路徑: %~p1
Echo 擴充到一個文件名: %~n1
Echo 擴充到一個文件擴展名: %~x1
Echo 擴充的路徑指含有短名: %~s1
Echo 擴充到文件屬性: %~a1
Echo 擴充到文件的日期/時間: %~t1
Echo 擴充到文件的大小: %~z1
Echo 擴展到驅動器號和路徑:%~dp1
Echo 擴展到文件名和擴展名:%~nx1
Echo 擴展到類似 DIR 的輸出行:%~ftza1
Echo.
Goto :eof
if
1、結合errorlevel使用
@echo off
dir d:
rem 退出代碼>=1,就跳到1;>=0跳至0
if errorlevel 1 goto 1
if errorlevel 0 goto 0
:0
echo 命令執行成功
goto exit
:1
echo 命令執行失敗
goto exit
:exit
pause
if errorlevel 值 cmmand
句式,它的含義是:如果返回的錯誤碼值大於或等於值 的時候,將執行cmmand
執行成功時
第二行代碼改爲一個不存在盤符時, dir e:,會執行失敗
2、判斷字符串相等
@echo off
if "cat"=="cat" (echo yes) else echo No
這裏是區分大小寫的。除了使用引號,也可以使用中括號[ ]
和大括號{ }
包裹字符串
3、判斷文件存在與否
@echo off
if exist a.txt echo 文件存在
@echo off
if not exist a.txt echo 文件不存在