Is typing %^ into cmd.exe a Windows easter egg?

79

13

When I typed %^ in cmd and pressed Enter, and it said:

More?

When I pressed Enter again, it gave the same response.

Is this an Easter Egg? What is this?

rahuldottech

Posted 2015-05-20T14:51:44.817

Reputation: 5 095

13You should have pressed enter one more time, and then googled "cmd carat" instead :) – panhandel – 2015-05-20T14:56:44.950

6type "ip^" [enter] "config" [enter]... without the qoutes. now you understand what ^ does. – n00b – 2015-05-21T15:11:19.943

7What about this behavior makes you think that it's an easter egg? – jamesdlin – 2015-05-21T16:48:07.000

1I am guessing because More is different enough from what you would normally expect. (Normally you would think it would just say invalid/) – Evan Carslake – 2015-05-24T02:47:16.507

Answers

50

CMD is line based. It only reads and executes one line at a time. When you are typing and you haven't finished a line it prompts with More?.

Your specific thing is there is no line ending so it's waiting to see what comes after the % sign.

It's easier to see using brackets

Try dir

then

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

Only when the line is complete (matching brackets) is it read and executed.

Here's a list of punctuation.

&    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


.
--

trigger

Posted 2015-05-20T14:51:44.817

Reputation: 571

4Where did you find this list of punctuation? – Steven – 2015-05-21T16:16:33.807

5I wrote it myself. References are MSDos 6.22 Help File, Windows Vista command help (ie dir /?), and Windows Software Developent Kit. – trigger – 2015-05-21T20:56:02.073

1

Plus MS used to have this up for free download, appears no more. Chapter 2 from Windows NT Shell Scripting, published by MacMillan Technical Publishing (I've put it up on my skydrive at https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA%21121)

– trigger – 2015-05-21T21:43:01.943

'(' and ')' are parentheses; brackets are usually considered '[]' (square brackets) or '<>' (angle brackets). – toddkaufmann – 2015-05-22T14:50:19.150

7

@toddkaufmann "Brackets" can also refer to ( and ). It's a common use of the word outside of the US, see https://www.englishclub.com/writing/punctuation-round-brackets.htm for instance.

– hvd – 2015-05-23T10:04:10.827

@trigger: Sorry, we can't open this document because it appears to be corrupt.

– 3D1T0R – 2019-02-01T19:40:02.887

113

No.

Microsoft formally stopped including Easter eggs in its programs as part of its Trustworthy Computing Initiative in 2002.
http://en.wikipedia.org/wiki/Easter_eggs_in_Microsoft_products

Larry Osterman noted in October 2005 that adding an Easter Egg is grounds for termination.

Nowadays, adding an easter egg to a Microsoft OS is immediate grounds for termination, so it's highly unlikely you'll ever see another.

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

The command prompt is looking for a continuation (More?) of the command, since it ended with the escape character ^.

The ^ escape character can be used to make long commands more readable by splitting them into multiple lines and escaping the Carriage Return + Line Feed (CR/LF) at the end of a line
http://ss64.com/nt/syntax-esc.html

Steven

Posted 2015-05-20T14:51:44.817

Reputation: 24 804

31They got rid of all future easter eggs to increase trustworthiness? How do they suppose that works out? – Panzercrisis – 2015-05-20T17:59:12.580

29

@Panzercrisis Why No Easter Eggs? http://blogs.msdn.com/b/larryosterman/archive/2005/10/21/483608.aspx

– Steven – 2015-05-20T18:08:57.543

12Why does it prompt More? a second time if you don't put anything in response to the first one? – Random832 – 2015-05-20T18:25:38.113

@Random832 because you can continue several lines down if you really want to. – Alec Teal – 2015-05-21T10:10:56.393

2@AlecTeal Yes, but to do that I have to keep putting ^ at the end of each line. If I type something (with no ^) to the first More? prompt, it executes immediately, but if I just enter, it prompts More? again. EDIT: I've done some further testing with echo which reveals that entering a blank line at the More? prompt puts a literal CR/LF in the command line. Don't know why I didn't run into that yesterday. – Random832 – 2015-05-21T12:13:17.837

When it thinks it has a complete line it stops saying more? A blank anything is just that, not a line finishing thing. Remember the line is parsed only when complete. I use brackets to simulate batch commands interactively, ie I usually paste commands rather than run batch files. It's not exactly the same but close enough usually. – trigger – 2015-05-21T22:06:59.703

2Its Trustworthy Computing Initiative prevented undocumented behaviors, but they never prevented documented easter eggs ;) – Derek 朕會功夫 – 2015-06-21T17:55:39.577

7

Simple really, From all the other answers and comments (and some inputs of my own) this is what I gathered:

  • Microsoft doesn't include Easter eggs and this isn't one.
  • Even typing just ^ gives the same response.
  • ^ is used to finish incomplete commands: [thanks @n00b]

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

  • So basically if you type ip^ and press enter and then type config then cmd registers it as ipconfig.
  • ^ is used to make long commands more readable. [thanks @Steven]
  • I thought this is an easter egg because I didn't expect cmd to respond in a human language

  • rahuldottech

    Posted 2015-05-20T14:51:44.817

    Reputation: 5 095