Cmd
exe有很多命令行參數
具體情況如下
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [
[/S] [/C | /K] string]
/C 執行字符串指定的命令然後中斷;
/K 執行字符串指定的命令但保留;
/S 在 /C 或 /K 後修改字符串處理;
/Q 關閉回應;
/D 從注冊表中停用執行AutoRun命令;
/A 使向內部管道或文件命令的輸出成為ANSI;
/U 使向內部管道或文件命令的輸出成為Unicode
/T:fg 設置前景/背景顏色
/E:ON 啟用命令擴展;
/E:OFF 停用命令擴展;
/F:ON 啟用文件和目錄名稱完成字符;
/F:OFF 停用文件和目錄名稱完成字符;
/V:ON 將c作為定界符啟動延緩環境變量擴展
/V:OFF 停用延緩的環境擴展
請注意
如果字符串有引號
可以接受用命令分隔符
&&
隔開的多個命令
並且
由於兼容原因
/X與/E:ON相同
/Y與/E:OFF相同
並且/R與/C相同
忽略任何其它命令選項
如果指定了/C或/K
命令選項後的命令行其余部分將作為命令行處理
在這種情況下
會使用下列邏輯處理引號字符(
):
(
)如果符合下列所有條件
那麼在命令行上的引號字符將被保留:
不帶 /S 命令選項;
整整兩個引號字符;
在兩個引號字符之間沒有特殊字符
特殊字符為下列中的一個: <>()@^|;
在兩個引號字符之間有至少一個空白字符;
在兩個引號字符之間有至少一個可執行文件的名稱
(
)否則
老辦法是
看第一個字符是否是一個引號字符
如果是
捨去開頭的字符並刪除命令行上 的最後一個引號字符
保留最後一個引號字符之後的文字
如果/D未在命令行上被指定
當CMD
EXE開始時
它會尋找以下REG_SZ/REG_EXPAND_SZ注冊表變量
如果其中一個或兩個都存在
這兩個變量會先被執行
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
和
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
命令擴展按默認值是啟用的
你也可以使用 /E:OFF
為某一特定調用而停用擴展
你可以在用戶登錄會話上啟用或停用cmd
exe所有調用的擴展
這要通過設置使用Regedit
exe 的注冊表中的一個或兩個REG_DWORD值:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions
和
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions到
x
或
x
用戶特定設置比機器設置有優先權
命令行命令選項比注冊表設置有優先權
命令行擴展包括對下列命令所做的更改和添加:
Del或Erase
Color
CD或ChDir
MD或MkDir
Prompt
Pushd
Popd
Set
SetLocal
End Local
IF
For
Call
Shift
Goto
Start(同時包括對外部命令調用所做的更改)
As soc
Ftype
有關詳細信息
請鍵入
HELP 命令名
延遲變量環境擴展不按默認值啟用
你可以用/V:ON或 /V:OFF命令選項
為CMD
EXE的某個調用而啟用或停用延遲環境變量擴充
你可以在機器上或用戶登錄會話上啟用或停用CMD
EXE所有調用的完成
這要通過設置使用Regedit
exe的注冊表中的一個或兩個REG_DWORD
值:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion
和
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion到
x
或
x
用戶特定設置比機器設置有優先權
命令行命令選項比注冊表設置有優先權
如果延遲環境變量擴充被啟用
驚歎號字符可在執行時間
被用來代替一個環境變量的數值
文件和目錄名完成不按默認值啟用
你可以用/F:ON或/F:OFF命令選項
為cmd
exe的某個調用而啟用或停用文件名完成
你可以在機器上或用戶登錄會話上啟用或停用cmd
exe所有調用的完成
這要通過設置使用Regedit
exe 的注冊表中的一個或兩個REG_DWORD值:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar
和
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar
由一個控制字符的十六進制值作為一個特定參數(例如
x
是Ctrl
D
x
是 Ctrl
F)
用戶特定設置優先於機器設置
命令行命令選項優先於注冊表設置
如果完成是用/F:ON命令選項啟用的
兩個要使用的控制符是:目錄名字完成用Ctrl
D
文件名完成用Ctrl
F
要停用注冊表中的某個字符
請用空格(
x
)的數值
因為此字符不是控制字符
如果鍵入兩個控制字符中的一個
完成會被調用
完成功能將路徑字符長帶光標的左邊
如果沒有通配符
將通配符附加到左邊
並建立相符的路徑列表
然後
顯示第一個相符的路徑
如果沒有相符的路徑
則發出嘟嘟聲
不影響顯示
之後
重復按同一個控制字符會循環顯示相符路徑的列表
將 Shift 鍵跟控制字符同時按下
會倒著顯示列表
如果對該行進行了任何編輯
並再次按下控制字符
保存的相符路徑的列表會被丟棄
新的會被生成
如果在文件和目錄名完成之間命令選項
會發生同樣現象
兩個控制字符之間的唯一區別是文件完成字符符合文件和目錄名
而目錄完成字符只符合目錄名
如果文件完成被用於內置式目錄命令(CD
MD或RD)
就會使用目錄完成
將引號用相符路徑括起來
完成代碼可以正確處理含有空格或其它特殊字符的文件名
同時
如果備份
然後從行內調用文件完成
完成被調用是位於光標右方的文字會被丟棄
編者按:前邊講了這麼多
主要是從原理上介紹了微軟的一種命令擴展和路徑擴展
至於
它要完成的功能對於我們大多數電腦愛好這來說是很有趣並且是實用價值的
從小編在http
://查詢的資料得知
自從Windows NT
以來
Windows便具有了和Linux一樣的命令行自動補全的功能
不信將HKEY_LOCAL_MACHINE\Software\Microsoft\ Comma
nd Prosessor\CompletionChar的鍵值改為
然後切換到命令行窗口
輸入cd c:\wind
然後按一個Tab試一下
呵呵……系統自動為你輸入了cd c:\windows
一個有趣的Bug
在命令行(甚至在其它如Word
等圖形界面編輯器中!)調用任何一種中文輸入法後
如果在全角
中文標點狀態下輸入一次
……
(可按Shift+^直接從鍵盤輸入)
再輸入大寫的任意英文字母或按Shift鍵輸入某些特殊符號
則每個字符後面會自動添加一個
…
號
如
W…
%…
等
不知微軟此舉是何用意?筆者死活想不出這種功能有何用處
只能解釋為是一個無關緊要的Bug
由以上可以看出
傳統的DOS在Win
時代並不是被完全拋棄
而是被發揚光大
它已經由歷史上一個獨當一面的操作系統轉變為Win
操作系統的有機組成部分
有道是尺有所短
寸有所長
命令行與圖形界面相比自有其獨特魅力
我們不應忘記
老DOS
更不應忽視對命令行操作的了解和使用
許多時候
一個並不怎麼復雜的操作只需用命令行就能既快又好地完成
又為什麼非得要尋找(甚至是開發)一個專門的圖形界面的工具呢?
From:http://tw.wingwit.com/Article/os/xtgl/201311/9353.html