我正在尝试修改我的 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”)(通过重启,直到您更改它)。