web-dev-qa-db-ja.com

Windowsのコマンドラインで、ファイルシステムのどこにいるかを示す動的プロンプトを取得するにはどうすればよいですか?

次のように動的に現在のディレクトリ名のみを表示するように、CMDを変更しようとしています。

Desktop $

フォルダを切り替えたら、更新する必要があります。

純粋にバッチファイルのコードである必要はありません。外部コマンド、cygwinbashなどに依存する場合があります。

@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,'"
6
guneysus

MicrosoftのPowerShellを使用して、プロンプトは何でもできる関数によって生成されます。

あなたが望むことをするプロンプト関数は次のとおりです:

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

詳細については、以下を参照してください。

シェルプロンプトに現在のフォルダー名のみを表示するようにWindows Powershellを構成します
プロンプトに関するPowershell
Windows PowerShellの完全なプロンプト

1
harrymc

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

結果は次のとおりです。

enter image description here

4
stderr

AUTOEXEC.BATPrompt $P$Gのウィキペディアエントリに基づいて、必要な処理を実行します。これは古き良きDOSからの引き継ぎです。神は、なぜこのようなものが初期の頃からデフォルトにされなかったのかを知っているだけです... DOS3.3かそこら。

2
killermist

コンソールのどこにいるかの完全なコンテキストを知るのが好きですが、ディレクトリツリーを深く下るほど、「現在のドライブとパス」が長くなるため、両方の長所を活かすために、完全なドライブとパスがあります。続いてCR、次に ">"。

これは、アクセスできるすべてのWindowsマシンで現在行っていることです。

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

これにより、ユーザー名、ホスト名、現在のフォルダーへのフルパス、および入力用のまったく新しい行を示すプロンプトが表示されます。

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

SETXは、変数(この場合は「プロンプト」)を永続的に(再起動して、変更するまで)保存します。

0
skeetastax