¿Escribir% ^ en cmd.exe es un huevo de Pascua de Windows?

79

Cuando escribí %^cmd y presioné Enter, y dijo:

More?

Cuando presioné Enternuevamente, dio la misma respuesta.

¿Es este un huevo de Pascua? ¿Que es esto?

rahuldottech
fuente
13
Debería haber presionado enter una vez más, y luego buscó en Google "cmd quilate" en su lugar :)
panhandel
66
escriba "ip ^" [enter] "config" [enter] ... sin las qoutes. ahora entiendes lo que ^ hace.
n00b
77
¿Qué pasa con este comportamiento que te hace pensar que es un huevo de pascua?
jamesdlin
1
Supongo que Morees lo suficientemente diferente de lo que normalmente esperarías. (Normalmente pensarías que solo diría inválido /)
Evan Carslake

Respuestas:

50

CMD está basado en líneas. Solo lee y ejecuta una línea a la vez. Cuando está escribiendo y no ha terminado una línea, aparece More?.

Lo específico es que no hay final de línea, por lo que está esperando ver qué viene después del %letrero.

Es más fácil de ver usando paréntesis

Tratar dir

entonces

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

Solo cuando la línea está completa (corchetes coincidentes) se lee y ejecuta.

Aquí hay una lista de puntuación.

&    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


.
--
desencadenar
fuente
44
¿Dónde encontraste esta lista de puntuación?
Steven
55
Lo escribí yo mismo. Las referencias son MSDos 6.22 Help File, Windows Vista command help (ie dir /?) y Windows Software Developent Kit.
disparador
1
Además, MS solía tener esto para descarga gratuita, ya no aparece. Capítulo 2 de Windows NT Shell Scripting, publicado por MacMillan Technical Publishing (lo publiqué en mi skydrive en skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 )
activador
'(' y ')' son paréntesis; los corchetes generalmente se consideran '[]' (corchetes) o '<>' (corchetes angulares).
toddkaufmann
77
@toddkaufmann "Brackets" también puede referirse a (y). Es un uso común de la palabra fuera de los EE. UU., Consulte englishclub.com/writing/punctuation-round-brackets.htm por ejemplo.
hvd
114

No.

Microsoft dejó de incluir formalmente los huevos de Pascua en sus programas como parte de su Iniciativa de Computación Confiable en 2002.
http://en.wikipedia.org/wiki/Easter_eggs_in_Microsoft_products

Larry Osterman señaló en octubre de 2005 que agregar un huevo de Pascua es motivo de terminación.

Hoy en día, agregar un huevo de Pascua a un sistema operativo de Microsoft es motivo inmediato para la terminación, por lo que es muy poco probable que alguna vez veas otro.

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

El símbolo del sistema está buscando una continuación ( More?) del comando, ya que terminó con el carácter de escape ^.

El carácter ^ escape se puede usar para hacer que los comandos largos sean más legibles al dividirlos en varias líneas y escapar del retorno de carro + avance de línea (CR / LF) al final de una línea
http://ss64.com/nt/syntax- esc.html

Steven
fuente
31
¿Se deshicieron de todos los futuros huevos de pascua para aumentar la confiabilidad? ¿Cómo suponen que eso funciona?
Panzercrisis
29
@Panzercrisis ¿Por qué no hay huevos de Pascua? blogs.msdn.com/b/larryosterman/archive/2005/10/21/483608.aspx
Steven
12
¿Por qué solicita más? una segunda vez si no pones nada en respuesta a la primera?
Random832
2
@AlecTeal Sí, pero para hacerlo tengo que seguir poniendo ^al final de cada línea. Si escribo algo (sin ^) en el primer More?mensaje, se ejecuta de inmediato, pero si solo ingreso, vuelve a More?aparecer. EDITAR: He realizado algunas pruebas adicionales con echo que revela que ingresar una línea en blanco en el More?indicador coloca un CR / LF literal en la línea de comando. No sé por qué no me encontré con eso ayer.
Random832
2
Su Iniciativa de Computación Confiable impidió comportamientos indocumentados, pero nunca impidieron los huevos de pascua documentados ;)
Derek 朕 會 功夫
7

Realmente simple, de todas las otras respuestas y comentarios (y algunas entradas propias) esto es lo que reuní:

  • Microsoft no incluye los huevos de Pascua y este no es uno.
  • Incluso escribir simplemente ^da la misma respuesta.
  • ^ se usa para terminar comandos incompletos: [gracias @ n00b]

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

  • Básicamente, si escribe ip^y presiona enter y luego escribe config, cmd lo registra como ipconfig.
  • ^se usa para hacer que los comandos largos sean más legibles. [gracias @ Steven]
  • Pensé que este es un huevo de pascua porque no esperaba que cmd respondiera en un lenguaje humano

  • rahuldottech
    fuente