Na linha de comando do windows, como faço para obter um prompt dinâmico que me diga onde estou no sistema de arquivos?

5

Estou tentando modificar meu CMD, para mostrar apenas o nome do diretório atual dinamicamente como:

Desktop $

Quando troquei a pasta, ela deve ser atualizada.

Não é necessário que o código esteja em um arquivo batch puramente , ele pode depender de comandos externos, cygwin bash, etc.

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

saídas

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

Mas

>> prompt %a%

bash -c "pwd | sed 's,^\(.*/\)\?\([^/]*\),,'"
    
por guneysus 04.11.2013 / 15:29

4 respostas

1

Usando o PowerShell da Microsoft, o prompt é produzido por uma função que pode fazer qualquer coisa.

Uma função de prompt que faz o que você quer é:

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

Para mais informações, consulte:

Configure o Windows Powershell para exibir apenas o nome da pasta atual no prompt do shell Powershell sobre prompts
Prompt perfeito para o Windows PowerShell

    
por 12.11.2013 / 08:55
4

Acredito que você pode usar o comando 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.

Exemplo:

setx PROMPT $P$S$$$S

Atualizar

Crie um arquivo em lote contendo o código abaixo e execute.

@echo off

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

O resultado é:

    
por 04.11.2013 / 16:00
2

Com base na entrada da Wikipedia para AUTOEXEC.BAT prompt $P$G fará o que você deseja. Este é um resquício do bom e velho DOS. Só Deus sabe por que algo assim nunca foi um padrão desde os primeiros dias do ... DOS3.3 ou mais.

    
por 12.11.2013 / 03:58
0

Eu gosto de saber o contexto completo de onde eu estou no console, mas quanto mais você desce na árvore de diretórios, mais longa é a "Unidade e caminho atuais", então para ter o melhor dos dois mundos, eu tenho o total unidade e caminho seguido por um CR, em seguida, um ">".

Isso é o que faço agora em todas as máquinas Windows às quais tenho acesso:

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

O que lhe dá um prompt mostrando o nome de usuário, o nome do host, o caminho completo para a pasta atual e uma linha totalmente nova para digitar:

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

O SETX armazena a variável (neste caso, "PROMPT") permanentemente (através de reinicializações, até você alterá-la).

    
por 15.03.2018 / 08:31