
Pensei em ver se alguém tinha alguma indicação sobre a seguinte situação. Tenho personalizado o prompt de comando de acordo com minhas necessidades e recentemente alterei o prompt do meu usuário. Em vez de exibir o caminho no prompt, gostaria que fosse sempre o título da janela.
Coloquei uma nova chave de registro em
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor/AutoRun
com valor
title %cd%
Este script é executado sempre que o prompt de comando é iniciado. Isso funciona. Sempre que abro um prompt de comando via atalho, isso funciona corretamente.
No entanto, sempre que abro um prompt de comando clicando com o botão direito -> Abrir prompt de comando aqui, isso aparentemente não é executado. Eu tentei olhar o comando shell para abrir aqui localizado em
HKEY_CLASSES_ROOT/Directory/shell/cmd/command
que por padrão é definido como:
cmd.exe /s /k pushd "%V"
Eu tentei mudar isso para:
cmd.exe /s /k "cd %1 & title %cd%"
O "% 1" foi sugerido em outros locais on-line para um script aberto aqui e, se bem entendi, o & deve executar os dois comandos. No entanto, ainda não funciona sempre que abro o prompt de comando aqui. O diretório de trabalho está realmente correto, o título da janela ainda é "C:\Windows\System32"
Alguma indicação?
Responder1
Você estava bem perto da solução. Para mim o seguinte comando funciona:
cmd.exe /s /k "pushd ""%V"" & title %V"
EDIT: Existem vários locais no registro que suportam a extensão do shell "Prompt de comando aqui". Para que essa alteração funcione de forma consistente em todos os objetos (diretórios, unidades e pastas especiais), você deve pesquisar no registro todas as ocorrências cmd.exe /s /k pushd "%V"
e substituí-las pelo valor acima.
Responder2
Experimente este site, esses caras são realmente úteis. Eles têm uma avaria de todos os interruptores.
E NÃO, não tenho nenhuma afiliação com esse site, só estou tentando ser útil. Esses caras, assim como o site SuperUser.com, me ajudaram centenas de vezes.
CMD.exe Inicie um novo shell CMD e (opcionalmente) execute um comando/programa executável.
Syntax
CMD [charset] [options]
CMD [charset] [options] [/c Command]
CMD [charset] [options] [/k Command]
Options
/C Run Command and then terminate
/K Run Command and then return to the CMD prompt.
This is useful for testing, to examine variables
Command : The command, program or batch script to be run.
This can even be several commands separated with '&'
(the whole should also be surrounded by "quotes")
/T:fg Sets the foreground/background colours
/X Enable extensions to CMD.EXE
/Y Disable extensions to CMD.EXE
/A Output ANSI characters
/U Output UNICODE characters (UCS-2 le)
These options will affect piping or redirecting to a file.
Most common text files are ANSI, use these switches
when you need to convert the character set.
/D Ignore registry AutoRun commands
HKLM | HKCU \Software\Microsoft\Command Processor\AutoRun
/F:ON Enable auto-completion of pathnames entered at the CMD prompt
/F:OFF Disable auto-completion of pathnames entered at the CMD prompt (default)At the command prompt Ctrl-D gives folder name completion and Ctrl-F gives File and folder name completion.
These key-strokes will display the first matching path. Thereafter, repeated pressing of the same control key will cycle through the list of matching paths. Pressing SHIFT with the control key will move through the list backwards.
/Q Turn echo off
/S Strip quote characters from the command_line
/V:ON Enable delayed environment variable expansion
this allows a FOR loop to specify !variable! instead of %variable%
expanding the variable at execution time instead of at input time.
/V:OFF Disable delayed environment expansion.
Environment expansion preference can be set permanently in the registry
HKLM | HKCU \Software\Microsoft\Command Processor\DelayedExpansion
Set to either 0x1 or 0x0
/knetdiag /debug
/knetdiag /fix
The knetdiag switches are undocumented and work in XP only
they list and (may) fix these networking issues.If /C or /K is specified, then the remainder of the command line is processed as an immediate command in the new shell. Multiple commands separated by the command separator '&' or '&&' are accepted if surrounded by quotes.
A seguinte lógica é usada para processar caracteres de aspas ("):
- Se todas as condições a seguir forem atendidas, os caracteres de aspas na linha de comando serão preservados:
- Sem opção /S (tirar aspas)
- Exatamente dois caracteres de citação
- Não há caracteres especiais entre as duas aspas, onde especial é um dos seguintes: & < >( ) @ ^ |
- Há um ou mais caracteres de espaço em branco entre os dois caracteres de aspas
- A string entre os dois caracteres de aspas é o nome de um arquivo executável.
- Caso contrário, o comportamento antigo é verificar se o primeiro caractere é uma aspa e, em caso afirmativo, retirar o caractere inicial e remover o último caractere de aspa na linha de comando, preservando qualquer texto após o último caractere de aspa. Para negar esse comportamento, use um conjunto duplo de aspas "" no início e no final da linha de comando. Tela inteira A combinação de teclas ALT + ENTER mudará uma janela CMD para o modo de tela inteira. pressione ALT + ENTER novamente para retornar a uma janela normal. Command.com vs CMD.exe Todos os comandos nestas páginas pressupõem que você está executando a linha de comando de 32 ou 64 bits (cmd.exe)
O antigo processador de comando de 16 bits command.com é fornecido para fornecer compatibilidade com versões anteriores para aplicativos DOS de 16 bits. Command.com tem funcionalidade muito limitada em comparação com cmd.exe, por exemplo, não conseguirá definir um% errorlevel% após muitos comandos.
Se você nomear seus scripts em lote com a extensão .CMD em vez de .BAT, eles não serão executados em command.com, mesmo se copiados para uma máquina Windows 95.
A variável de ambiente %COMSPEC% mostrará se você estiver executando CMD.EXE ou command.com
Uma diferença importante entre os scripts .CMD e .BAT (executados em CMD.EXE) é que, com extensões habilitadas, comandos como PATH/APPEND/PROMPT/SET/ASSOC redefinirão ERRORLEVEL para 0 se forem bem-sucedidos. No arquivo .BAT de estilo antigo, o ERRORLEVEL não será alterado a menos que haja um novo erro (fonte). Nas versões de 64 bits do Windows, o CMD.exe de 32 bits pode ser encontrado em %windir%\SysWoW64\cmd.exe Para reduzir problemas de compatibilidade, o subsistema WOW64 isola binários de 32 bits de binários de 64 bits redirecionando chamadas de registro e alguns chamadas do sistema de arquivos. Abrindo o CMD no Windows Explorer Você pode abrir um novo prompt CMD escolhendo START, RUN, cmd, OK Chaves de registro: ;Permitir caminhos UNC no prompt de comando [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor] "DisableUNCCheck"=dword:00000001
; Execute um comando quando o CMD.exe iniciar [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "AutoRun"=-
; Ativar conclusão automática [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "CompletionChar"=0x9
; Para Windows 7: adicione uma opção elevada 'Abrir prompt do CMD aqui (Admin)' ao ; menu de contexto para pastas do sistema de arquivos: [HKEY_CLASSES_ROOT\Directory\shell\runas]@="Abra o prompt do CMD aqui (Admin)" [HKEY_CLASSES_ROOT\Directory\shell\runas\command] @="cmd.exe /k pushd %L"
; Para Windows 7: adicione uma opção elevada 'Abrir prompt do CMD aqui (Admin)' ao ; Meu menu de contexto de computador: [hkey_classes_root \ clsid {20d04fe0-3aea-1069-a2d8-08002b30309d} \ shell \ runas] @"Abra Cmd Prompt aqui (admin)" [hkey_classes_root \ clsid {20d04fe }\shell\runas\command] @="cmd.exe"Histórico de comandos anteriores Pressionar a seta PARA CIMA listará os comandos anteriores inseridos no prompt de comando. Outras teclas de função DOSKEY são carregadas por padrão (F7, F8, F9) Copiar e Colar / QuickEdit Para simplificar o uso de recortar e colar no Prompt de Comando, ative o modo QuickEdit da seguinte forma: Ative o menu de controle no canto superior esquerdo do atual janela cmd, vá para Propriedades, guia Opções e marque Modo QuickEdit. Agora você pode selecionar o texto com o mouse e pressionar Enter (ou clicar com o botão direito) para copiá-lo para a área de transferência. Cole em qualquer lugar usando Control+V (ou clique com o botão direito) ou através do menu. ESC cancelará qualquer seleção e retornará ao modo de edição. Ao copiar entre janelas, pode ser necessário um clique para selecionar a janela e um segundo clique para colar. Execute várias instâncias do CMD.exe Na linha de comando ou em um script em lote, o CMD iniciará uma nova instância do CMD.exe que aparecerá na mesma janela. O comando EXIT fechará a segunda instância do CMD e retornará ao shell anterior.
Um método para chamar um script em lote de outro é executar um comando como CMD /c C:\docs\myscript.cmd
A saída do CMD pode ser redirecionada para um arquivo de texto. Observe que onde CMD /c é usado, o comando EXIT não é necessário.
A variável de ambiente %CMDCMDLINE% será expandida para a linha de comando original passada para CMD.EXE A versão nativa do CMD.exe está sempre em %windir%\system32, em sistemas operacionais de 64 bits também existe um CMD.exe de 32 bits em % windir%\SysWOW64
Pausando ou parando um script em lote A execução de qualquer script em lote pode ser pausada pressionando CTRL-S Isso também funciona para pausar um único comando, como uma listagem DIR. Pressionar qualquer tecla retomará a operação.
A execução de qualquer script em lote pode ser interrompida pressionando CTRL-C
Se um arquivo em lote CHAMA outro arquivo em lote CTRL-C sairá de ambos os scripts em lote. Se CMD /c for usado para chamar um arquivo em lote de outro, CTRL-C fará com que apenas um dos scripts em lote seja encerrado. (veja também SAIR)
Comandos longos e nomes de arquivos longos No Windows XP, a linha de comando do CMD é limitada a 8.191 caracteres. Para todas as versões do Windows, NTFS e FAT permitem nomes de caminho de até 260 caracteres.
Uma solução alternativa para o comprimento limitado do nome do caminho é prefixar \?\
por exemplo:
\?\C:\TEMP\Long_Directory\Long_Filename.txt
ErrorLevel
CMD /C retornará um nível de erro, por exemplo CMD /c dir Z: onde a unidade Z : não existe, retornará %errorlevel% = 1 para o shell CMD de chamada.
Extensões de comando
Grande parte da funcionalidade do CMD.exe pode ser desabilitada - isso afetará todos os comandos internos. As extensões de comando são habilitadas por padrão. Isso é controlado definindo um valor no registro: HKCU\Software\Microsoft\Command Processor\EnableExtensions Como alternativa, no Win XP, você pode executar CMD /e:on ou CMD /e:off
Exemplos:
Execute um programa e passe um parâmetro Filename:
CMD /c write.exe c:\docs\sample.txt
Execute um programa e passe um nome de arquivo longo:
CMD /c write.exe "c:\sampledocuments\sample.txt"
Espaços no caminho do programa:
CMD /c "" c:\Arquivos de programas\Microsoft Office\Office\Winword.exe""
Espaços no caminho do programa + parâmetros:
CMD /c ""c:\Arquivos de programas\demo.cmd"" Parâmetro1 Param2
Espaços no caminho do programa + parâmetros com espaços:
CMD /k ""c:\batch files\demo.cmd" "Parâmetro 1 com espaço" "Parâmetro2 com espaço""
Inicie Demo1 e, em seguida, inicie Demo2:
CMD /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
“Aqueles que podem comandar a si mesmos, comandam os outros” - Hazlitt
Relacionado:
EXIT - Use para fechar um shell CMD e retornar.
CALL - Chama um programa em lote de outro
START - Executa um programa, comando ou arquivo em lote
DOSKEY Editar linha de comando, recuperar comandos
Q156276 - Cmd não suporta nomes UNC como o diretório atual
Powershell: Você pode executar o shell CMD no Powershell, Sair irá retorne você ao prompt PS.
Comando bash equivalente (Linux): bash - execute o shell bash (também csh, ksh, sh)