2.命令列特性
多行指令合併
要將分開多行的指令寫成一行,可利用 &
dir & pause
切換目錄:CD
change directory的縮寫,注意絕對路徑與相對路徑的差別,鍵入cd /?可得到更多的說明
使用 /D 參數可以同時變更工作磁碟機及其工作目錄
D:
cd /d c:\windows\system32
路徑中含有空白字元時,請使用雙引號括起來
cd "\winnt\profiles\username\programs\start menu"
切換工作目錄至批次檔所在目錄
cd /d "%~dp0"
顯示目前工作目錄
echo %CD%
顯示目前磁碟機
echo %CD:~0,3%
導向(Redirect)
以命令的處理為主,輸入導向是檔案、輸出導向也是到檔案
將命令的輸出導向到檔案或控制碼,對於檔案來說有新建立(>)與附加(>>)二種
命令 > 檔案名稱
- 命令 >> 檔案名稱
- 命令 2>>檔案名稱
- 命令 2>&1
- 命令的輸入來自某個檔案或控制碼,只有 < 一種
- 命令 < 檔案名稱
dir > list.txt sort < list.txt sort < list.txt > alphlist.txt
控制碼英文 | 控制碼數值 | 控制碼意義 |
---|---|---|
stdin | 0 | 鍵盤輸入 |
stdout | 1 | 正常輸出至命令提示字元 |
stderr | 2 | 錯誤輸出至命令提示字元 |
特殊裝置
Windows 效法了 Linux 作業系統將周邊裝置視為檔案的作法,至少有下列2種特殊裝置可視為檔案來運作
- 主控台(console)
透過命令列方式直接keyin內容,以建立檔案
copy con newfile.txt
- 黑洞(nul)
一般用來將指令的正常訊息導向至黑洞,使正常訊息不要顯示在螢幕上,然後配合判斷 errorlevel 或 %errorlevel%變數,寫入log
ping 168.95.192.1 > nul
if errorlevel 1 echo ping target fail >> pinglog.txt
管線(Pipe)
將命令的輸出透過管線當作另一個命令的輸入
- 命令1 | 命令2
dir | sort
指令的 or 、and
表面上根據 or 、and 來判斷,實際上也是透過判斷回傳值來決定,從判斷前1個命令的成功或失敗來決定是否執行第2個命令
- 命令1失敗才執行命令2 => 命令1 || 命令2
ping 123.123.123.123 > nul || echo ping command fail
- 命令1成功才執行命令2 => 命令1 && 命令2
ping 168.95.192.1 > nul && echo %date%-%time% ping succeful >> pingTarget.log
更改命令提示字元:prompt
請在命令提示字元視窗下練習輸入下面的指令,除了觀察提示字元的變化,並留意每呼叫一次cmd,可呼叫exit返回的特性。
prompt Level1$g
cmd
prompt Level2$g
cmd
prompt Level3$g
exit
exit
可輸入prompt /? 來獲得更多的提示字元類型。