Digitar% ^ into cmd.exe é um ovo de páscoa do Windows?


79

Quando digitei %^cmd e pressionei Enter, e ele disse:

More?

Quando pressionei Enternovamente, deu a mesma resposta.

Este é um ovo de Páscoa? O que é isso?


13
Você deve ter pressionado entrar mais uma vez, e então pesquisei "quilate cmd" em vez :)
panhandel

6
digite "ip ^" [enter] "config" [enter] ... sem os qoutes. agora você entende o que ^ faz.
N00b

7
E esse comportamento faz você pensar que é um ovo de páscoa?
Jamesdlin # 21/15

1
Eu estou supondo, porque Moreé diferente o suficiente do que você normalmente esperaria. (Normalmente, você pensaria que seria apenas dizer inválido /)
Evan Carslake

Respostas:


50

O CMD é baseado em linhas. Ele apenas lê e executa uma linha por vez. Quando você digita e não termina uma linha, ela é solicitada More?.

Sua coisa específica é que não há linha terminando, portanto, está esperando para ver o que vem após o %sinal.

É mais fácil ver usando colchetes

Experimentar dir

então

(dir
echo %time%
(type c:\windows\win.ini
)
)

Somente quando a linha está completa (colchetes correspondentes) é lida e executada.

Aqui está uma lista de pontuação.

&    separates commands on a line.

&&    executes this command only if previous command's errorlevel is 0.

||    (not used above) executes this command only if previous command's errorlevel is NOT 0

>    output to a file

>>    append output to a file

<    input from a file

|    output of one command into the input of another command

^    escapes any of the above, including itself, if needed to be passed to a program

"    parameters with spaces must be enclosed in quotes

+ used with copy to concatenate files. E.G. copy file1+file2 newfile

, used with copy to indicate missing parameters. This updates the files modified date. E.G. copy /b file1,,

%variablename% a inbuilt or user set environmental variable

!variablename! a user set environmental variable expanded at execution time, turned with SelLocal EnableDelayedExpansion command

%<number> (%1) the nth command line parameter passed to a batch file. %0 is the batch file's name.

%* (%*) the entire command line.

%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. Single % sign at command prompt and double % sign in a batch file.

\\ (\\servername\sharename\folder\file.ext) access files and folders via UNC naming.

: (win.ini:streamname) accesses an alternative steam. Also separates drive from rest of path.

. (win.ini) the LAST dot in a file path separates the name from extension

. (dir .\*.txt) the current directory

.. (cd ..) the parent directory


\\?\ (\\?\c:\windows\win.ini) When a file path is prefixed with \\?\ filename checks are turned off. 

< > : " / \ | Reserved characters. May not be used in filenames.



Reserved names. These refer to devices eg, 

copy con <filename> 

which copies a file to the console window.

CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, 

COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, 

LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9



Maximum path length              260 characters
Maximum path length (\\?\)      32,767 characters (approx - some rare characters use 2 characters of storage)
Maximum filename length        255 characters


.
--

4
Onde você encontrou esta lista de pontuação?
21315 Steven

5
Eu mesmo escrevi. As referências são o arquivo de ajuda do MSDos 6.22, a ajuda do comando do Windows Vista (por exemplo dir /?) e o Windows Software Developent Kit.
Trigger

1
Além disso, o MS costumava ter isso para download gratuito, não aparece mais. Capítulo 2 do Windows NT Shell Scripting, publicado pela MacMillan Technical Publishing (eu o coloquei no skydrive em skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 )
dispara

'(' e ')' são parênteses; colchetes são geralmente considerados '[]' (colchetes) ou '<>' (colchetes angulares).
Toddkaufmann 22/05

7
@toddkaufmann "Suportes" também pode se referir a (e). É um uso comum da palavra fora dos EUA, consulte englishclub.com/writing/punctuation-round-brackets.htm, por exemplo.
hvd 23/05

114

Não.

A Microsoft parou formalmente de incluir ovos de Páscoa em seus programas como parte da Trustworthy Computing Initiative em 2002.
http://en.wikipedia.org/wiki/Easter_eggs_in_Microsoft_products

Larry Osterman observou em outubro de 2005 que adicionar um ovo de Páscoa é motivo para rescisão.

Hoje em dia, adicionar um ovo de páscoa a um sistema operacional da Microsoft é motivo imediato para rescisão, por isso é altamente improvável que você veja outro.

http://blogs.msdn.com/b/larryosterman/archive/2005/10/20/483110.aspx

O prompt de comando está procurando uma continuação ( More?) do comando, pois terminou com o caractere de escape ^.

O caractere ^ escape pode ser usado para tornar os comandos longos mais legíveis, dividindo-os em várias linhas e escapando do retorno de carro + avanço de linha (CR / LF) no final de uma linha
http://ss64.com/nt/syntax- esc.html


31
Eles se livraram de todos os futuros ovos da páscoa para aumentar a confiabilidade? Como eles supõem que isso funciona?
Panzercrisis

29
@ Panzercrisis Por que não existem ovos de Páscoa? blogs.msdn.com/b/larryosterman/archive/2005/10/21/483608.aspx
Steven

12
Por que solicita mais? uma segunda vez, se você não colocar nada em resposta à primeira?
Random832

2
@AlecTeal Sim, mas para fazer isso eu tenho que continuar colocando ^no final de cada linha. Se eu digitar algo (sem ^) no primeiro More?prompt, ele será executado imediatamente, mas se eu apenas entrar, ele solicitará More?novamente. Edição: Eu fiz alguns testes adicionais com eco, que revela que a entrada de uma linha em branco no More?prompt coloca um CR / LF literal na linha de comando. Não sei por que não encontrei isso ontem.
Random832

2
Sua iniciativa Trustworthy Computing impedido comportamentos ilegais, mas eles nunca impediu documentado ovos de páscoa;)
Derek朕會功夫

7

Simples, realmente. De todas as outras respostas e comentários (e algumas sugestões minhas), foi isso que reuni:

  • A Microsoft não inclui ovos de Páscoa e este não é um.
  • Mesmo digitando apenas ^dá a mesma resposta.
  • ^ é usado para concluir comandos incompletos: [thanks @ n00b]

    C:\windows\system32>net ^
    More? user
    
    User accounts for \\INFINITEPC
    
    -------------------------------------------------------------------------------
    Administrator            Guest                    Rahul
    The command completed successfully.
    

  • Então, basicamente, se você digitar, ip^pressionar enter e digitar config, o cmd registrará como ipconfig.
  • ^é usado para tornar comandos longos mais legíveis. [obrigado @Steven]
  • Eu pensei que este era um ovo de páscoa, porque eu não esperava que o cmd respondesse em uma linguagem humana

  • Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
    Licensed under cc by-sa 3.0 with attribution required.