Czy wpisywanie% ^ w cmd.exe jest pisanką systemu Windows?

79

Kiedy wpisałem %^cmd i nacisnąłem Enter:

More?

Kiedy nacisnąłem Enterponownie, dało to tę samą odpowiedź.

Czy to jajko wielkanocne? Co to jest?

rahuldottech
źródło
13
Powinieneś jeszcze raz nacisnąć klawisz Enter, a następnie przejść do wyszukiwarki „cmd carat” :)
panhandel
6
wpisz „ip ^” [enter] „config” [enter] ... bez qoutes. teraz rozumiesz, co robi ^.
n00b
7
Co z tym zachowaniem sprawia, że ​​myślisz, że to easter egg?
jamesdlin
1
Zgaduję, ponieważ Morejest wystarczająco różny od tego, czego normalnie byś się spodziewał. (Normalnie można by pomyśleć, że byłoby to po prostu nieważne /)
Evan Carslake

Odpowiedzi:

50

CMD jest oparty na linii. Czyta i wykonuje tylko jedną linię na raz. Kiedy piszesz i nie skończyłeś wiersza, który wyświetla monit More?.

Twoja szczególna rzecz polega na tym, że nie ma końca linii, więc czeka, aby zobaczyć, co nastąpi po %znaku.

Łatwiej jest zobaczyć za pomocą nawiasów

Próbować dir

następnie

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

Tylko po zakończeniu wiersza (dopasowanie nawiasów) jest on odczytywany i wykonywany.

Oto lista interpunkcji.

&    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


.
--
cyngiel
źródło
4
Gdzie znalazłeś tę listę interpunkcyjną?
Steven
5
Sam to napisałem. Odniesienia znajdują się w pliku pomocy MSDos 6.22, pomocy dotyczącej poleceń systemu Windows Vista (tj. dir /?) I Windows Software Developent Kit.
aktywować
1
Plus MS zwykło mieć to do pobrania za darmo, nie pojawia się więcej. Rozdział 2 z Windows NT Shell skryptów, opublikowane przez MacMillan Publishing Technicznego (mam umieścić go na moim SkyDrive w skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 )
spust
„(” i „)” są nawiasami; nawiasy kwadratowe są zwykle uważane za „[]” (nawiasy kwadratowe) lub „<>” (nawiasy kątowe).
toddkaufmann
7
@toddkaufmann „Wsporniki” mogą również odnosić się do (i). Jest to powszechne użycie tego słowa poza USA, patrz na przykład englishclub.com/writing/punctuation-round-brackets.htm .
hvd
114

Nie.

Microsoft oficjalnie zaprzestał włączania pisanek do swoich programów w ramach Trustworthy Computing Initiative w 2002 r.
Http://en.wikipedia.org/wiki/Easter_eggs_in_Microsoft_products

Larry Osterman zauważył w październiku 2005 r., Że dodanie jajka wielkanocnego jest podstawą do rozwiązania umowy.

W dzisiejszych czasach dodanie jajka wielkanocnego do systemu operacyjnego Microsoft jest natychmiastową przyczyną wypowiedzenia, więc jest bardzo mało prawdopodobne, że zobaczysz inną.

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

Wiersz polecenia szuka kontynuacji ( More?) polecenia, ponieważ zakończyło się ono znakiem ucieczki ^.

Znak ucieczki ^ można wykorzystać do zwiększenia czytelności długich poleceń, dzieląc je na wiele linii i unikając znaku powrotu karetki + przesunięcia wiersza (CR / LF) na końcu linii
http://ss64.com/nt/syntax- esc.html

Steven
źródło
31
Pozbyli się wszystkich przyszłych pisanek, aby zwiększyć wiarygodność? Jak przypuszczają, że to działa?
Panzercrisis,
29
@Panzercrisis Dlaczego nie ma pisanek? blogs.msdn.com/b/larryosterman/archive/2005/10/21/483608.aspx
Steven
12
Dlaczego wyświetla więcej? drugi raz, jeśli nie odpowiesz nic na pierwszy?
Random832
2
@AlecTeal Tak, ale aby to zrobić, muszę umieszczać ^na końcu każdej linii. Jeśli wpiszesz coś (bez ^) w pierwszym More?pytaniu, zostanie ono wykonane natychmiast, ale jeśli tylko wejdę, wyświetli monit More?ponownie. EDYCJA: Przeprowadziłem kilka dalszych testów za pomocą echa, które ujawniają, że wprowadzenie pustego wiersza w More?wierszu poleceń powoduje literalne CR / LF w wierszu poleceń. Nie wiem, dlaczego nie wpadłem na to wczoraj.
Random832
2
Jego godna zaufania inicjatywa komputerowa zapobiegała nieudokumentowanym zachowaniom, ale nigdy nie zapobiegała udokumentowaniu pisanek;)
Derek 朕 會 功夫
7

To naprawdę proste. Ze wszystkich innych odpowiedzi i komentarzy (i niektórych moich własnych danych wejściowych) zebrałem:

  • Microsoft nie obejmuje pisanek i to nie jest jeden.
  • Nawet pisanie ^daje taką samą odpowiedź.
  • ^ służy do zakończenia niekompletnych poleceń: [dzięki @ n00b]

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

  • Zasadniczo, jeśli wpiszesz ip^i naciśniesz enter, a następnie wpisz, configcmd zarejestruje to jako ipconfig.
  • ^służy do zwiększenia czytelności długich poleceń. [dzięki @Steven]
  • Myślałem, że to easter egg, ponieważ nie spodziewałem się, że cmd zareaguje w ludzkim języku

  • rahuldottech
    źródło