在 Windows 命令行上,如何获取动态提示来告诉我我在文件系统中的位置?

在 Windows 命令行上,如何获取动态提示来告诉我我在文件系统中的位置?

我正在尝试修改我的 CMD,以便仅动态显示当前目录名称,例如:

Desktop $

当我切换文件夹时,它必须更新。

它不需要在纯的批处理文件。它可能依赖于任何外部命令,赛格威重击等等。

@echo off
set a=bash -c "pwd | sed 's,^\(.*/\)\?\([^/]*\),\2,'"
%a%
cmd

输出

_test-et
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. Tüm hakları saklıdır.
>>

>> prompt %a%

给出

bash -c "pwd | sed 's,^\(.*/\)\?\([^/]*\),\2,'"

答案1

使用 Microsoft 的 PowerShell,提示由可以执行任何操作的函数产生。

执行您想要的操作的提示函数是:

function prompt { (Split-Path -Leaf $pwd) + '$ ' }

有关详细信息,请参阅:For more information, see:

答案2

我相信你可以使用prompt命令。

PROMPT [text]

  text    Specifies a new command prompt.

Prompt can be made up of normal characters and the following special codes:

  $A   & (Ampersand)
  $B   | (pipe)
  $C   ( (Left parenthesis)
  $D   Current date
  $E   Escape code (ASCII code 27)
  $F   ) (Right parenthesis)
  $G   > (greater-than sign)
  $H   Backspace (erases previous character)
  $L   < (less-than sign)
  $N   Current drive
  $P   Current drive and path
  $Q   = (equal sign)
  $S     (space)
  $T   Current time
  $V   Windows version number
  $_   Carriage return and linefeed
  $$   $ (dollar sign)

If Command Extensions are enabled the PROMPT command supports
the following additional formatting characters:

  $+   zero or more plus sign (+) characters depending upon the
       depth of the PUSHD directory stack, one character for each
       level pushed.

  $M   Displays the remote name associated with the current drive
       letter or the empty string if current drive is not a network
       drive.

例子:

setx PROMPT $P$S$$$S

更新

创建一个包含以下代码的批处理文件并运行。

@echo off

set root=%~p0
for %%F in ("%root%.") do set "ParentFolder=%%~nF"
setx PROMPT %ParentFolder%$S$F$S

结果是:

在此处输入图片描述

答案3

根据维基百科条目自动执行命令 prompt $P$G会做你想做的事。这是从老 DOS 中保留下来的。只有上帝知道为什么自从 DOS3.3 左右的早期以来,这样的事情从未成为默认设置。

答案4

我喜欢了解我在控制台中的完整上下文,但是您在目录树中走得越深,“当前驱动器和路径”就越长,因此为了兼具两全其美,我得到了完整的驱动器和路径,后跟 CR,然后是“>”。

这就是我现在在所有可以访问的 Windows 机器上所做的事情:

SETX PROMPT "%username%@%computername% $P$_$G"

这将为您提供一个提示,显示用户名、主机名、当前文件夹的完整路径以及用于输入的全新一行:

USERNAME@HOSTNAME C:\PATH\TO\CURRENT\FOLDER
>

SETX 永久存储变量(在本例中为“PROMPT”)(通过重启,直到您更改它)。

相关内容