Als ich %^
cmd eingab und drückte Enter, kam:
More?
Als ich Entererneut drückte, kam die gleiche Reaktion.
Ist das ein Easter Egg? Was ist das?
Antwort1
CMD ist zeilenbasiert. Es liest und führt immer nur eine Zeile auf einmal aus. Wenn Sie tippen und eine Zeile noch nicht beendet haben, wird eine Eingabeaufforderung angezeigt More?
.
Ihr spezielles Problem ist, dass es kein Zeilenende gibt, sodass abgewartet werden muss, was nach dem %
Zeichen kommt.
Es ist einfacher zu sehen, wenn man Klammern verwendet
Versuchendir
Dann
(dir
echo %time%
(type c:\windows\win.ini
)
)
Erst wenn die Zeile vollständig ist (passende Klammern), wird sie gelesen und ausgeführt.
Hier ist eine Liste der Satzzeichen.
& 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
.
--
Antwort2
NEIN.
Im Rahmen der Trustworthy Computing Initiative hat Microsoft im Jahr 2002 offiziell damit aufgehört, Easter Eggs in seine Programme aufzunehmen.
https://en.wikipedia.org/wiki/Easter_eggs_in_Microsoft_products
Larry Osterman von Microsoft stellte im Oktober 2005 fest, dass das Hinzufügen eines Easter Eggs ein Kündigungsgrund sei.
Heutzutage ist das Hinzufügen eines Easter Eggs zu einem Microsoft-Betriebssystem ein sofortiger Kündigungsgrund. Es ist also sehr unwahrscheinlich, dass Sie jemals wieder eines sehen werden.
https://blogs.msdn.com/b/larryosterman/archive/2005/10/20/483110.aspx
Oder:MSDN-Blog-Archiv
Die Eingabeaufforderung sucht nach einer Fortsetzung ( More?
) des Befehls, da dieser mit dem Escape-Zeichen endete ^
.
Mit dem Escape-Zeichen ^ können Sie lange Befehle lesbarer machen, indem Sie sie in mehrere Zeilen aufteilen und den Wagenrücklauf vermeiden.
- Zeilenvorschub (CR/LF) am Ende einer Zeile
https://ss64.com/nt/syntax-esc.html
Antwort3
Eigentlich ganz einfach. Aus allen anderen Antworten und Kommentaren (und einigen meiner eigenen Beiträge) habe ich Folgendes herausgefunden:
^
führt zur gleichen Antwort.
^
wird verwendet um unvollständige Befehle zu beenden: [danke @n00b]
C:\windows\system32>net ^
More? user
User accounts for \\INFINITEPC
-------------------------------------------------------------------------------
Administrator Guest Rahul
The command completed successfully.
ip^
, die Eingabetaste drücken und dann Folgendes eingeben, config
wird es von cmd als registriert ipconfig
.
^
wird verwendet, um lange Befehle lesbarer zu machen. [danke @Steven]