
我想看看是否有人對以下情況有任何指示。我一直在根據自己的需求自訂命令提示符,並且最近更改了用戶的提示符。我希望它始終是視窗標題,而不是在提示中顯示路徑。
我把一個新的註冊表項放在
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor/AutoRun
有價值
title %cd%
該腳本在命令提示字元啟動時隨時運行。這有效。每當我透過快捷方式開啟命令提示字元時,它都會正常工作。
但是,每當我透過右鍵單擊 -> 在此處開啟命令提示字元開啟命令提示字元時,這顯然不會執行。我嘗試查看位於此處打開的 shell 命令
HKEY_CLASSES_ROOT/Directory/shell/cmd/command
預設設定為:
cmd.exe /s /k pushd "%V"
我嘗試將其更改為:
cmd.exe /s /k "cd %1 & title %cd%"
在網路上的其他地方建議使用「%1」作為 open-here 腳本,如果我理解正確, & 應該執行這兩個命令。但是,每次我在這裡打開命令提示字元時它仍然不起作用。工作目錄確實是正確的,視窗標題仍然是“C:\Windows\System32”
有什麼指點嗎?
答案1
你已經非常接近解決方案了。對我來說,以下命令有效:
cmd.exe /s /k "pushd ""%V"" & title %V"
編輯:註冊表中有多個位置支援「命令提示字元此處」shell 擴充。為了使此變更在所有物件(目錄、磁碟機和特殊資料夾)中一致地起作用,您必須在登錄中搜尋所有出現的cmd.exe /s /k pushd "%V"
並將它們替換為上面的值。
答案2
試試這個網站,這些人真的很有幫助。他們有所有開關的故障。
不,我與該網站沒有任何關係,我只是想提供幫助。這些人以及 SuperUser.com 網站已經數百次為我提供了幫助。
CMD.exe 啟動新的 CMD shell 並(可選)運行命令/可執行程式。
Syntax
CMD [charset] [options]
CMD [charset] [options] [/c Command]
CMD [charset] [options] [/k Command]
Options
/C Run Command and then terminate
/K Run Command and then return to the CMD prompt.
This is useful for testing, to examine variables
Command : The command, program or batch script to be run.
This can even be several commands separated with '&'
(the whole should also be surrounded by "quotes")
/T:fg Sets the foreground/background colours
/X Enable extensions to CMD.EXE
/Y Disable extensions to CMD.EXE
/A Output ANSI characters
/U Output UNICODE characters (UCS-2 le)
These options will affect piping or redirecting to a file.
Most common text files are ANSI, use these switches
when you need to convert the character set.
/D Ignore registry AutoRun commands
HKLM | HKCU \Software\Microsoft\Command Processor\AutoRun
/F:ON Enable auto-completion of pathnames entered at the CMD prompt
/F:OFF Disable auto-completion of pathnames entered at the CMD prompt (default)At the command prompt Ctrl-D gives folder name completion and Ctrl-F gives File and folder name completion.
These key-strokes will display the first matching path. Thereafter, repeated pressing of the same control key will cycle through the list of matching paths. Pressing SHIFT with the control key will move through the list backwards.
/Q Turn echo off
/S Strip quote characters from the command_line
/V:ON Enable delayed environment variable expansion
this allows a FOR loop to specify !variable! instead of %variable%
expanding the variable at execution time instead of at input time.
/V:OFF Disable delayed environment expansion.
Environment expansion preference can be set permanently in the registry
HKLM | HKCU \Software\Microsoft\Command Processor\DelayedExpansion
Set to either 0x1 or 0x0
/knetdiag /debug
/knetdiag /fix
The knetdiag switches are undocumented and work in XP only
they list and (may) fix these networking issues.If /C or /K is specified, then the remainder of the command line is processed as an immediate command in the new shell. Multiple commands separated by the command separator '&' or '&&' are accepted if surrounded by quotes.
以下邏輯用於處理引號 (") 字元:
- 如果滿足以下所有條件,則保留命令列上的引號字元:
- 無 /S 開關(去掉引號)
- 正好兩個引號字符
- 兩個引號字符之間沒有特殊字符,其中特殊字符是以下之一: & < >( ) @ ^ |
- 兩個引號字符之間有一個或多個空白字符
- 兩個引號字元之間的字串是可執行檔的名稱。
- 否則,舊的行為是查看第一個字符是否是引號字符,如果是,則剝離前導字符並刪除命令行上的最後一個引號字符,保留最後一個引號字符之後的任何文本。若要消除此行為,請在命令列的開頭和結尾處使用雙引號“”。全螢幕 組合鍵 ALT + ENTER 會將 CMD 視窗切換到全螢幕模式。再次按 ALT + ENTER 返回正常視窗。 Command.com 與 CMD.exe 這些頁面上的所有命令均假定您正在執行 32 位元或 64 位元命令列 (cmd.exe)
提供舊的 16 位元命令處理器 command.com 是為了為 16 位元 DOS 應用程式提供向後相容性。與 cmd.exe 相比,Command.com 的功能非常有限,例如,在執行許多命令後,它無法設定%errorlevel%。
如果您使用擴展名 .CMD 而不是 .BAT 來命名批次腳本,那麼即使將其複製到 Windows 95 計算機,它們也不會在 command.com 下運行。
%COMSPEC% 環境變數將顯示您是否正在執行 CMD.EXE 或 command.com
.CMD 和.BAT 腳本(在CMD.EXE 下運行)之間的一個主要區別是,啟用擴展後,諸如PATH/APPEND/PROMPT/SET/ASSOC 之類的命令如果成功,會將ERRORLEVEL 重置為0 。在舊式 .BAT 檔案中,除非出現新錯誤,否則 ERRORLEVEL 將不會變更(來源)。在64 位元版本的Windows 上,可以在%windir%\SysWoW64\cmd.exe 中找到32 位元CMD.exe 為了減少相容性問題,WOW64 子系統透過重定向註冊表呼叫和一些命令將32 位元二進位檔案則與64 位元二進位檔案隔離開來。從Windows 資源管理器開啟CMD 您可以透過選擇「開始」、「執行」、「cmd」、「確定」來開啟新的CMD 提示符號註冊表項: ;在命令提示字元允許UNC 路徑[HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Command Processor] "DisableUNCCheck"=dword:00000001
; CMD.exe 啟動時執行指令 [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "AutoRun"=-
;啟動自動完成 [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "CompletionChar"=0x9
;對於 Windows 7:將提升的「在此處開啟 CMD 提示字元(管理員)」選項新增至 ;檔案系統資料夾的上下文功能表: [HKEY_CLASSES_ROOT\Directory\shell\runas]@="在此開啟CMD 提示符號(Admin)" [HKEY_CLASSES_ROOT\Directory\shell\runas\command] @="cmd.exe /k Pushd %L"
;對於 Windows 7:將提升的「在此處開啟 CMD 提示字元(管理員)」選項新增至 ;我的電腦上下文選單: [HKEY_CLASSES_ROOT\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas] @="在此開啟CMD 提示字元(管理員)" [HKEY_CLASSES_200CLSID 1069-A2D8-08002B30309D }\shell\runas\command] @="cmd.exe"先前命令的歷史記錄 按向上鍵將列出先前在命令提示字元下輸入的命令。預設載入其他DOSKEY 功能鍵(F7、F8、F9) 複製和貼上/ 快速編輯要簡化在命令提示字元下剪下和貼上的使用,請啟用快速編輯模式,如下所示: 啟動目前視窗左上角的控制選單cmd 視窗中,前往「屬性」、「選項」選項卡,然後勾選「快速編輯模式」。現在您可以用滑鼠選擇文字並按 Enter(或右鍵單擊)將其複製到剪貼簿。使用 Control+V(或右鍵)或透過選單貼上到任意位置。 ESC 將取消任何選擇並返回編輯模式。在窗口之間複製時,您可能需要單擊以選擇窗口,然後再單擊以進行貼上。執行 CMD.exe 的多個實例 在命令列或批次腳本中,CMD 將啟動 CMD.exe 的新實例,該實例將出現在同一視窗中。 EXIT 指令將關閉第二個 CMD 實例並返回前一個 shell。
從另一個批次腳本呼叫一個批次腳本的方法是執行 CMD /c C:\docs\myscript.cmd 等命令
CMD 的輸出可以重定向到文字檔案。請注意,在使用 CMD /c 的地方,不需要 EXIT 指令。
環境變數%CMDCMDLINE% 將擴展為傳遞給CMD.EXE 的原始命令列。 exe Windir%\SysWOW64
暫停或停止批次腳本 按 CTRL-S 可以暫停任何批次腳本的執行 這也適用於暫停單一命令,例如 DIR 清單 按任意鍵將恢復操作。
按 CTRL-C 可以停止執行任何批次腳本
如果一個批次檔呼叫另一個批次文件,則 CTRL-C 將退出這兩個批次腳本。如果使用 CMD /c 從另一個批次檔呼叫一個批次文件,則 CTRL-C 將僅導致其中一個批次腳本終止。 (另請參閱退出)
長命令和長檔名 在 Windows XP 下,CMD 命令列限制為 8,191 個字元。對於所有版本的 Windows,NTFS 和 FAT 允許路徑名最多包含 260 個字元。
有限路徑名長度的解決方法是新增前綴 \?\,
例如:
\?\C:\TEMP\Long_Directory\Long_Filename.txt
ErrorLevel
CMD /C 將傳回錯誤級別,例如 CMD /c dir Z:磁碟機 Z 所在的位置:不存在,將回傳%errorlevel% = 1 到呼叫CMD shell。
命令擴充
CMD.exe 的大部分功能都可以停用 - 這將影響所有內部命令,預設啟用命令擴充。這是透過在登錄中設定一個值來控制的: HKCU\Software\Microsoft\Command Processor\EnableExtensions 或在 Win XP 下,您可以執行 CMD /e:on 或 CMD /e:off
範例:
執行程式並傳遞檔案名稱參數:
CMD /c write.exe c:\docs\sample.txt
執行程式並傳遞長檔名稱:
CMD /c write.exe "c:\sample Documents\sample.txt"
程式路徑中的空格:
CMD /c "" c:\Program Files\Microsoft Office\Office\Winword.exe""
程式路徑中的空格 + 參數:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
程式路徑中的空格+ 有空格的參數:
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
啟動 Demo1,然後啟動 Demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
“那些能夠指揮自己的人,也指揮他人”- Hazlitt
有關的:
EXIT - 使用此命令關閉 CMD shell 並返回。
CALL - 從另一個批次程式呼叫一個批次程式
START - 執行程式、指令或批次檔
DOSKEY 編輯命令列,呼叫指令
Q156276 - Cmd 不支援 UNC 名稱為目前目錄
Powershell:您可以在Powershell 下執行CMD shell ,退出將返回 PS 提示符號。
等效的 bash 指令 (Linux):bash - 執行 bash shell(也可以是 csh、ksh、sh)