doc 命令列特性

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
    
控制碼英文控制碼數值控制碼意義
stdin0鍵盤輸入
stdout1正常輸出至命令提示字元
stderr2錯誤輸出至命令提示字元

特殊裝置

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 /? 來獲得更多的提示字元類型。

留言

這個網誌中的熱門文章

格式透視 - 解析 PE 文件格式

doc call呼叫外部程式與副程式