Antworten:
Das ist eine interessante Lösung, die ich noch nie gesehen habe. Lass mich versuchen zu erklären:
echo %path%
. Dadurch werden alle Verzeichnisse in einer einzelnen Zeile gedruckt, die durch Semikolons ( ;
) getrennt sind.%path:a=b%
die alle a
Zeichen durch ersetztb
echo.
wird verwendet, um eine neue Zeile zu drucken&
wird zum Trennen von Befehlen verwendet, z. B. echo line1&echo line2
werden zwei Zeilen gedruckt;
nichts ersetzen und dann eine neue Zeile drucken". Ich kann dazu keine Dokumentation finden, es ist also nur meine Interpretation. Ehrlich gesagt wusste ich nicht einmal, dass das möglich ist, aber los geht's. UPDATE Meine Interpretation dieses Schritts scheint falsch zu sein und wird besser von wizzwizz4 erklärt .echo path
? Können wir das nicht sagen ? werden %% für Variablen verwendet?
set greeting=Hello
und dann echo %greeting%
. Verwirrenderweise handelt PATH
es sich sowohl um einen Befehl als auch um eine Variable, sodass Sie den Befehl eingeben path
oder echo %path%
dasselbe Ergebnis erzielen.
$PATH
zum Beispiel.
echo.
ist nicht "der Befehl zum Drucken einer neuen Zeile". Dies ist der Befehlsinterpreter von Microsoft für Windows NT cmd
. und das echo.
ist einfach der Befehl zum Drucken eines Pfadelements, der sicherstellt, dass, wenn das Pfadelement leer ist, nicht auf die andere Funktionalität von umgeschaltet wirdecho
. Das erste echo
sollte eigentlich auch eines echo.
sein.
Hierbei wird die Substitution von Befehlszeilenvariablen verwendet. %path:;=&echo.%
bedeutet " %path%
, aber ersetze alle ;
s durch &echo.
". Dies bedeutet, dass mit set path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:
echo %path:;=&echo.%
wird:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Da &
es sich um ein Befehlstrennzeichen handelt, ist dies äquivalent zu:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
Aufgrund der Macken von DOS Batch, echo.
ist identisch mit, echo
außer wenn nichts danach ist. In diesem Fall wird einfach nichts gedruckt, anstatt Ihnen mitzuteilen, ob aktiviert ECHO
oder deaktiviert ist. Dies wird die Ausgabe machen:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
Eigentlich sollte es sein echo.%path:;=&echo.%
, den Fall zu berücksichtigen, bei dem %PATH%
mit a begonnen wird ;
, aber dieser Befehl ist sowieso ziemlich clever.
Wenn Sie sich mit detaillierten Details befassen, sollten Sie diese wirklich echo(
anstelle von verwenden echo.
. Dies liegt daran, echo.
dass es Probleme geben kann, wenn eine Datei aufgerufen wird echo
, und es ist langsam, weil die Festplatte ( %CD%
und ich denke auch, alle %PATH%
) jedes Mal überprüft werden muss, wenn sie ausgeführt wird. (Ich habe keine Kopie von Windows, daher kann ich sie nicht selbst überprüfen. Betrifft das Vorhandensein der Datei nur %CD%
oder irgendwo in der Welt , und was bewirkt sie?)%PATH%
echo
echo.
echo)
, aber ich erinnere mich nicht wirklich. ;-(
echo.
ist die, die vor Jahren am häufigsten im Umlauf war. Es ist das in vielen Büchern. Effizienz ist nicht das Problem. Verrücktes Verhalten, wenn verschiedene Dateien zufällig existieren. Als ich cmd
in OS / 2 einen 32-Bit-Ersatz für das 16-Bit- Format schrieb, war das Unterbrechen von Befehlsnamen bei diesen Satzzeichen und dieses sehr unregelmäßige Parsing-Verhalten eines der Dinge, die ich absichtlich nicht dupliziert und auf das Dokument gesetzt habe Liste der Unterschiede. Ich habe echodot
stattdessen einen externen Befehl eingegeben, den man echo.
nach Belieben aliasen kann.
echo(
es sich um die einzig sichere Version handelt.
echo.
funktioniert möglicherweise nicht .