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)

以命令的處理為主,輸入導向是檔案、輸出導向也是到檔案

  1. 將命令的輸出導向到檔案或控制碼,對於檔案來說有新建立(>)與附加(>>)二種

  2. 命令 > 檔案名稱

  3. 命令 >> 檔案名稱
  4. 命令 2>>檔案名稱
  5. 命令 2>&1
    1. 命令的輸入來自某個檔案或控制碼,只有 < 一種
  6. 命令 < 檔案名稱
    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 /? 來獲得更多的提示字元類型。

參考資源

results matching ""

    No results matching ""