Question Taper% ^ dans cmd.exe est-il un œuf de Pâques Windows?


Quand j'ai tapé %^ en cmd et pressé Entrer, et il a dit:

More?

Quand j'ai pressé Entrer encore une fois, il a donné la même réponse.

Est-ce un oeuf de Pâques? Qu'est-ce que c'est?


76
2018-05-20 14:51


origine


Vous devriez avoir appuyé sur Enter une fois de plus, puis googlé "cmd carat" à la place :) - panhandel
tapez "ip ^" [enter] "config" [enter] ... sans les qoutes. maintenant tu comprends ce que tu fais. - n00b
Qu'en est-il de ce comportement qui vous fait penser à un œuf de Pâques? - jamesdlin
Je devine parce que More est assez différent de ce à quoi vous vous attendez normalement. (Normalement, vous penseriez que cela dirait juste invalide /) - Evan Carslake


Réponses:


CMD est basé sur les lignes. Il lit et exécute seulement une ligne à la fois. Lorsque vous tapez et que vous n'avez pas terminé une ligne, vous y êtes invité. More?.

Votre chose spécifique est qu'il n'y a pas de fin de ligne donc il attend de voir ce qui vient après le % signe.

Il est plus facile de voir les crochets

Essayer dir

puis

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

Ce n'est que lorsque la ligne est terminée (les parenthèses correspondantes) qu'elle est lue et exécutée.

Voici une liste de ponctuation.

&    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


.
--

45
2018-05-20 19:55



Où avez-vous trouvé cette liste de ponctuation? - Steven
Je l'ai écrit moi-même. Les références sont le fichier d’aide MSDos 6.22, l’aide de la commande Windows Vista dir /?) et Windows Software Developent Kit. - trigger
Plus MS avait l'habitude d'avoir ceci en téléchargement gratuit, n'apparaît plus. Chapitre 2 de Windows NT Shell Scripting, publié par MacMillan Technical Publishing (je l'ai mis sur mon skydrive à skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121) - trigger
'(' et ')' sont des parenthèses; les parenthèses sont généralement considérées «[]» (crochets) ou «<>» (crochets). - toddkaufmann
@toddkaufmann "Brackets" peuvent également se référer à (et). C'est un usage courant du mot en dehors des États-Unis, voir englishclub.com/writing/punctuation-round-brackets.htm par exemple. - hvd


Non.

Microsoft a officiellement cessé d’inclure les œufs de Pâques dans ses programmes dans le cadre de son initiative d’informatique de confiance en 2002.   
http://en.wikipedia.org/wiki/Easter_eggs_in_Microsoft_products

Larry Osterman a noté en octobre 2005 que l'ajout d'un oeuf de Pâques est un motif de résiliation.

De nos jours, l'ajout d'un oeuf de Pâques à un système d'exploitation Microsoft est un motif immédiat   pour la résiliation, il est donc très peu probable que vous en voyiez un autre.

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

L’invite de commande recherche une suite (More?) de la commande, car elle se termine par le caractère d'échappement ^.

Le caractère d'échappement ^ peut être utilisé pour rendre les longues commandes plus lisibles   en les divisant en plusieurs lignes et en évitant le retour de chariot   + Line Feed (CR / LF) à la fin d'une ligne
http://ss64.com/nt/syntax-esc.html


111
2018-05-20 14:53



Ils se sont débarrassés de tous les futurs oeufs de Pâques pour augmenter la fiabilité? Comment supposent-ils que cela fonctionne? - Panzercrisis
@Panzercrisis Pourquoi pas des oeufs de Pâques? blogs.msdn.com/b/larryosterman/archive/2005/10/21/483608.aspx - Steven
Pourquoi invite-t-il plus? une deuxième fois si vous ne mettez rien en réponse à la première? - Random832
@AlecTeal Oui, mais pour cela je dois continuer à mettre ^ à la fin de chaque ligne. Si je tape quelque chose (sans ^) au premier More? invite, il s'exécute immédiatement, mais si je viens d'entrer, il invite More? encore. EDIT: J'ai fait quelques tests supplémentaires avec écho qui révèle que l’entrée d’une ligne blanche au More? prompt met un littéral CR / LF dans la ligne de commande. Je ne sais pas pourquoi je ne l'ai pas rencontré hier. - Random832
C'est un blog affreusement hideux. MS a-t-il inclus des considérations de marque dans son initiative informatique fiable? - Patrick M


Simple vraiment, Parmi toutes les autres réponses et commentaires (et quelques contributions personnelles), voici ce que j'ai rassemblé:

  • Microsoft n'inclut pas les oeufs de Pâques et ce n'est pas un.
  • Même en tapant juste ^ donne la même réponse.
  • ^ est utilisé pour terminer des commandes incomplètes: [merci @ n00b]
  • C:\windows\system32>net ^
    More? user
    
    User accounts for \\INFINITEPC
    
    -------------------------------------------------------------------------------
    Administrator            Guest                    Rahul
    The command completed successfully.
    

  • Donc, fondamentalement, si vous tapez ip^ et appuyez sur Entrée, puis tapez config alors cmd l'enregistre comme ipconfig.
  • ^ est utilisé pour rendre les longues commandes plus lisibles. [merci @Steven]
  • Je pensais que c'était un oeuf de Pâques parce que je ne m'attendais pas à ce que cmd réponde dans un langage humain

  • 6
    2018-06-10 07:24



    @Steven hein, bien sûr :) - rahuldottech