Является ли ввод% ^ into cmd.exe пасхальным яйцом Windows?


79

Когда я набрал %^cmd и нажал Enter, он сказал:

More?

Когда я нажал Enterснова, он дал тот же ответ.

Это пасхальное яйцо? Что это?


13
Вы должны были нажать ввод еще раз, а затем гуглили «cmd карат» вместо этого :)
panhandel

6
введите "ip ^" [enter] "config" [enter] ... без кавычек. теперь вы понимаете, что делает ^
n00b

7
Что из-за этого поведения заставляет вас думать, что это пасхальное яйцо?
Джеймсдлин

1
Я предполагаю, потому что Moreдостаточно отличается от того, что вы обычно ожидаете. (Обычно вы думаете, что он просто скажет недействительным /)
Эван Карслэйк

Ответы:


50

CMD является линейным. Он читает и выполняет только одну строку за раз. Когда вы печатаете, но не завершили строку, она предлагает More?.

Ваша особенность в том, что нет конца строки, поэтому он ждет, чтобы увидеть, что следует за %знаком.

Это легче увидеть с помощью скобок

Пытаться dir

тогда

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

Только когда строка завершена (соответствующие скобки), она читается и выполняется.

Вот список знаков препинания.

&    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
Где вы нашли этот список знаков препинания?
Стивен

5
Я написал это сам. Это файлы справки MSDos 6.22, справка по командам Windows Vista (т. Е. dir /?) И комплект разработчика программного обеспечения Windows.
срабатывание

1
Плюс MS имел обыкновение иметь это для бесплатного скачивания, больше не появляется. Глава 2 из сценариев оболочки Windows NT, опубликованная издательством MacMillan Technical Publishing (я разместил его на своем skydrive по адресу skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 )
триггер

'(' и ')' - круглые скобки; скобки обычно считаются «[]» (квадратные скобки) или «<>» (угловые скобки).
toddkaufmann

7
@toddkaufmann «Скобки» также могут ссылаться на (и). Это обычное использование слова за пределами США, см. Например , englishclub.com/writing/punctuation-round-brackets.htm .
HVD

114

Нет.

В 2002 году Microsoft официально прекратила включать пасхальные яйца в свои программы в рамках Инициативы по созданию надежных компьютеров.
Http://en.wikipedia.org/wiki/Easter_eggs_in_Microsoft_products

Ларри Остерман отметил в октябре 2005 года, что добавление пасхального яйца является основанием для прекращения.

В настоящее время добавление пасхального яйца в ОС Microsoft является немедленным основанием для прекращения, поэтому вряд ли вы когда-нибудь увидите другое.

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

Командная строка ищет продолжение ( More?) команды, поскольку оно заканчивается символом escape ^.

Экранирующий символ ^ можно использовать для того, чтобы сделать длинные команды более читабельными, разбив их на несколько строк и избежав возврата каретки + перевода строки (CR / LF) в конце строки
http://ss64.com/nt/syntax- esc.html


31
Они избавились от всех будущих пасхальных яиц, чтобы повысить надежность? Как они полагают, что это работает?
Panzercrisis

29
@Panzercrisis Почему нет пасхальных яиц? blogs.msdn.com/b/larryosterman/archive/2005/10/21/483608.aspx
Стивен

12
Почему это побуждает больше? во второй раз, если вы не положили ничего в ответ на первый?
Random832

2
@AlecTeal Да, но для этого я должен продолжать ставить ^в конце каждой строки. Если я набираю что-то (без ^) в первом More?приглашении, оно выполняется сразу, но если я просто ввожу, оно More?снова запрашивает . РЕДАКТИРОВАТЬ: я провел дальнейшее тестирование с помощью echo, которое показывает, что при вводе пустой строки в More?командной строке в командной строке помещается литерал CR / LF. Не знаю, почему я не столкнулся с этим вчера.
Random832

2
Его Инициатива надежных вычислений предотвратила недокументированное поведение, но они никогда не предотвращали документированные пасхальные яйца;)
Дерек k 朕 功夫

7

На самом деле все просто, из всех других ответов и комментариев (и некоторых моих собственных комментариев) вот что я собрал:

  • Microsoft не включает пасхальные яйца, и это не один.
  • Даже печатать просто ^дает тот же ответ.
  • ^ используется для завершения незавершенных команд: [спасибо @ n00b]

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

  • В общем, если вы наберете ip^и нажмете ввод, а затем наберите, configто cmd регистрирует его как ipconfig.
  • ^используется, чтобы сделать длинные команды более читабельными. [спасибо @Steven]
  • Я думал, что это пасхальное яйцо, потому что я не ожидал, что CMD ответит на человеческом языке

  • Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
    Licensed under cc by-sa 3.0 with attribution required.