Вводить% ^ в cmd.exe писанку для Windows?


79

Коли я набрав %^cmd і натиснув Enter, він сказав:

More?

Коли я Enterзнову натиснув , це дало таку ж відповідь.

Це писанка? Що це?


13
Вам слід було ще один раз натиснути
клавішу Enter

6
введіть "ip ^" [enter] "config" [enter] ... без qoutes. тепер ви розумієте, що ^ робить.
n00b

7
Що з такої поведінки змушує вас думати, що це писанка?
jamesdlin

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 Shell Scripting, опублікована MacMillan Technical Publishing (я поставив це на своєму skydrive за адресою skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 )
тригер

'(' і ')' є дужками; дужки зазвичай вважаються '[]' (квадратні дужки) або '<>' (кутові дужки).
toddkaufmann

7
@toddkaufmann "Скобки" також можуть посилатися на (і). Це звичайне використання слова за межами США, див ., Наприклад , englishclub.com/writing/punctuation-round-brackets.htm .
hvd

114

Немає.

Microsoft офіційно припинила включати пасхальні яйця в свої програми в рамках своєї Надійної обчислювальної ініціативи у 2002 році.
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
Чому це підказує Більше? вдруге, якщо ви нічого не ставите у відповідь на перший?
Випадково832

2
@AlecTeal Так, але для цього я повинен продовжувати ставити ^в кінці кожного рядка. Якщо я введіть щось (без ^) до першого More?підказки, воно виконується негайно, але якщо я просто ввійду, воно запросить More?знову. EDIT: Я зробив кілька подальших тестів із луною, яка виявляє, що введення порожнього рядка в More?рядку вводить буквальний CR / LF в командному рядку. Не знаю, чому я вчора не наткнувся на це.
Випадково832

2
Її Довірна обчислювальна ініціатива запобігала недокументованій поведінці, але вони ніколи не заважали задокументувати писанки;)
Дерек 朕 會 功夫

7

Насправді просто, З усіх інших відповідей та коментарів (і деяких моїх власних вправ) ось що я зібрав:

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

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

  • Отже, якщо ви вводите ip^та натискаєте клавішу Enter, а потім набираєте, configтоді cmd реєструє це як ipconfig.
  • ^використовується для того, щоб зробити довгі команди більш зрозумілими. [дякую @Steven]
  • Я подумав, що це писанка, тому що я не очікував, що cmd відповість людською мовою

  • Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
    Licensed under cc by-sa 3.0 with attribution required.