題 如何在Windows 7中永久自定義命令提示符?


我想改變提示 $p$g$_$f 永久,但每次重新打開命令窗口時它都會重置。

如何讓它永遠永遠保持不變?


74
2017-08-19 13:36


起源


這是一個有趣的問題(+1)因為現在沒有很多人甚至知道他們的DOS提示可以自定義。 - Randolf Richardson
現在不是這些叫做Command的提示嗎? - LarsTech
@La- rsTech:是的,DOS早已不復存在。 - grawity
老習慣!對我來說它總是一個DOS提示符。 - oscilatingcretin
@Randolf:我當然不知道!這個問題當之無愧。 - jprete


答案:


創建一個名為PROMPT的新環境變量。將變量值設置為所需的提示。

enter image description here

enter image description here


64
2017-08-19 13:40



+1這是第一句中提到重要內容的唯一答案。一旦知道命令解釋器發出的提示是由環境變量控制的,其餘部分就會變成一個簡單的應用練習 通用的SuperUser回答有關環境變量的問題。 - JdeBP
實際上,這並不是提及PROMPT變量創建的唯一答案 - 我的答案在第4步中也提到了這一點,其中包括: 4.創建一個名為“PROMPT”的變量並插入所需的提示文本(...) - Randolf Richardson
從技術上講,我的回答提到了Prompt變量,因為它提供了設置它的命令。 :) - EBGreen
EBGreen和Randolf Richardson,那麼“在第一句話“正在逃避你們兩個人? - JdeBP


在命令提示符下鍵入:

SETX Prompt $p$g$_$f

然後重新打開命令提示符。

對於任何不知道如何獲得DOS / CMD命令幫助的人,請鍵入:

setx /?

要得到:

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

Parameter List:
    /S     system          Specifies the remote system to connect to.

    /U     [domain\]user   Specifies the user context under which
                           the command should execute.

    /P     [password]      Specifies the password for the given
                           user context. Prompts for input if omitted.

    var                    Specifies the environment variable to set.

    value                  Specifies a value to be assigned to the
                           environment variable.

    /K     regpath         Specifies that the variable is set based
                           on information from a registry key.
                           Path should be specified in the format of
                           hive\key\...\value. For example,
                           HKEY_LOCAL_MACHINE\System\CurrentControlSet\
                           Control\TimeZoneInformation\StandardName.

    /F     file            Specifies the filename of the text file
                           to use.

    /A     x,y             Specifies absolute file coordinates
                           (line X, item Y) as parameters to search
                           within the file.

    /R     x,y string      Specifies relative file coordinates with
                           respect to "string" as the search parameters.

    /M                     Specifies that the variable should be set in
                           the system wide (HKEY_LOCAL_MACHINE)
                           environment. The default is to set the
                           variable under the HKEY_CURRENT_USER
                           environment.

    /X                     Displays file contents with x,y coordinates.

    /D     delimiters      Specifies additional delimiters such as ","
                           or "\". The built-in delimiters are space,
                           tab, carriage return, and linefeed. Any
                           ASCII character can be used as an additional
                           delimiter. The maximum number of delimiters,
                           including the built-in delimiters, is 15.

    /?                     Displays this help message.

NOTE: 1) SETX writes variables to the master environment in the registry.

      2) On a local system, variables created or modified by this tool
         will be available in future command windows but not in the
         current CMD.exe command window.

      3) On a remote system, variables created or modified by this tool
         will be available at the next logon session.

      4) The valid Registry Key data types are REG_DWORD, REG_EXPAND_SZ,
         REG_SZ, REG_MULTI_SZ.

      5) Supported hives:  HKEY_LOCAL_MACHINE (HKLM),
         HKEY_CURRENT_USER (HKCU).

      6) Delimiters are case sensitive.

      7) REG_DWORD values are extracted from the registry in decimal
         format.

Examples:
    SETX MACHINE COMPAQ
    SETX MACHINE "COMPAQ COMPUTER" /M
    SETX MYPATH "%PATH%"
    SETX MYPATH ~PATH~
    SETX /S system /U user /P password  MACHINE COMPAQ
    SETX /S system /U user /P password MYPATH ^%PATH^%
    SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
         Control\TimeZoneInformation\StandardName
    SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
         NT\CurrentVersion\CurrentBuildNumber" /M
    SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE\
         System\CurrentControlSet\Control\TimeZoneInformation\
         StandardName
    SETX /S system /U user /P password  BUILD /K
         "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
         CurrentVersion\CurrentBuildNumber" /M
    SETX /F ipconfig.out /X
    SETX IPADDR /F ipconfig.out /A 5,11
    SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*."
    SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
    SETX /S system /U user /P password  /F c:\ipconfig.out /X

71
2017-08-19 13:43



我也試過這個,而且效果很好。不過,我必須將另一個人的標記作為答案,即使你的人更直接也更重要。他是第一個,所以我必須做正確的事。不過,我對你贊不絕口。 - oscilatingcretin
我真的不在乎誰被標記為答案。我將指出將來的參考(儘管如此),標記答案的關鍵決定不是誰首先回答它是哪個答案是最好的。雖然確定答案是好的,但它給了代表真實的代表 原因 標記答案是幫助後來發現此問題的人更快地找到最佳解決方案。由於在這種特殊情況下其他解決方案沒有任何問題,因此無關緊要。 - EBGreen
我特別喜歡這個答案(+1),因為它表明有不止一種方法可以做同樣的事情(Perl [編程]特別強調的東西)。 - Randolf Richardson
我同意這不是第一個答案。你們倆都回答了我如何永久改變提示的基本問題。當兩個人達到同樣的目的時,後退是使用第一個答案。你的問題很簡短,解決了這個問題,而他是一個更複雜的UI跳躍方法,它暴露了更多關於環境變量的選擇。在選擇答案之前,我仔細權衡了選項。 - oscilatingcretin
擴大你的答案會很棒。目前缺乏背景。請看我們的簡短 怎麼回答 指導您了解如何更好地回答您的問題。那麼,是什麼呢 setx 確切地說,為什麼它一直在重置? - Tom Wijsman


要更改DOS提示符(或“命令提示符”)的外觀,請右鍵單擊“計算機”(通常在Windows桌面或Windows“開始”菜單中),然後按照下列步驟操作:

  1. 單擊“高級系統設置”標籤
  2. 單擊“環境變量...”按鈕
  3. 單擊“新建...”按鈕(“用戶變量”僅影響您,“系統變量”影響所有用戶)
  4. 創建一個名為“PROMPT”的變量並插入所需的提示文本(正如我在下面的最後一張圖片中所包含的那樣)
  5. 單擊“確定”按鈕以關閉“環境變量”窗口
  6. 單擊“確定”按鈕以關閉“系統屬性”窗口

此更改也將在重新啟動後繼續存在。

enter image description here

enter image description here

enter image description here


21
2017-08-19 13:53



我喜歡你如何突出顯示每個圖像中的點擊位置。你是怎麼做到的? - Konerak
@Konerak:謝謝!我打開每個窗口,按下Alt-PrintScreen(將當前活動窗口復製到剪貼板),然後將其粘貼到Adobe Photoshop中。之後,我在圖像的頂部(或前面)創建了一個圖層,用100%黑色填充它,將圖層的不透明度更改為25%(允許圖像以75%的水平淡出),然後我用了 矩形選框工具 使用“3px羽毛”選擇要突出顯示的區域並按下Delete鍵(從此黑色圖層中刪除)。之後,我將圖像保存為我的C:/ Temp /目錄中的.PNG文件並將其上傳到此處。 - Randolf Richardson
我是一個完整的photoshop菜鳥,但我看到你在說什麼!我將在下次向用戶展示我們的應用程序時嘗試這個 - 比屏幕上的MS Paint紅線更好。謝謝! - Konerak
Snagit的成本低於Photoshop,並為您提供了很多選項來處理屏幕捕獲。這是我最喜歡的屏幕帽。 - EBGreen
Upvoted用於解釋如何在Windows 7中獲取環境變量,以及解釋如何突出顯示圖像。有用的極客的東西,在這裡! - CigarDoug


編輯菜單命令或鏈接,啟動命令提示符,更改其目標,例如。

%SystemRoot%\system32\cmd.exe /K "prompt $p$g$_$f"

如果在光標前想要一個額外的空格:

%SystemRoot%\system32\cmd.exe /K "prompt $p$g$_$f "

5
2018-02-15 20:29



+1是一個有趣而獨特的解決方案。 - ArtOfWarfare


Windows附帶Windows PowerShell,允許在其他以前的Linux專用功能中進行流水線操作。

您可以通過單擊“開始”按鈕並輸入PowerShell來啟動它,它提供了三個選項。單擊PowerShell。右鍵單擊窗口標題欄,然後選擇“屬性”。在打開的窗口中,您可以配置視圖和行為設置。

否則,不要先打開PowerShell,然後選擇並單擊PowerShell模塊。

有關您可以執行的操作,請參閱Microsoft文檔:

PS:如果您開發控制台應用程序,我不推薦使用經典shell。


4
2017-08-19 17:49



+1為另一個好的答案。我特別喜歡“古典貝殼”這個詞。 - Randolf Richardson
管道也存在於CMD.EXE中,並且與unix上的經典工作幾乎相同。它們是NT最早公開測試版的CMD語法的一部分,也是DOS上COMMAND.COM的命令語法的一部分。 - RBerteig
命令shell管道,* nix shell管道和powershell管道之間的巨大差異是powershell管道傳遞對象而不是字符串。這是一個遊戲改變者imo。 - EBGreen
PowerShell與這個問題有什麼關係? - Synetech
@Syntech inc。 - 沒有直接的。但是間接地,通過提供可通過配置文件設置設置的可自定義提示,它可以替代使用符合問題意圖的cmd.exe。 - EBGreen


確定方法:

setx prompt ""

對於所有用戶:

setx prompt "" /M

提示可自定義的示例,帶樣式:

setx PROMPT "$_$e[0;1;44mN$e[1;30;47mI$e[0;1;44mC$E[35;40m $d$s$t$h$h$h$h$h$h$_$E[1;33;40m$p$_$E[0;0m~$g$s"

1
2017-08-28 19:18