Odpowiedzi:
To ciekawe rozwiązanie, którego nigdy wcześniej nie widziałem. Pozwól mi spróbować wyjaśnić:
echo %path%
. Spowoduje to wydrukowanie wszystkich katalogów w jednym wierszu oddzielonym średnikami ( ;
)%path:a=b%
który zastąpi wszystkie a
znakib
echo.
służy do drukowania nowego wiersza&
służy do oddzielania poleceń, np. echo line1&echo line2
wypisze dwie linie;
nic, a następnie wydrukuj nowy wiersz”. Nie mogę znaleźć żadnej dokumentacji na ten temat, więc to tylko moja interpretacja. Szczerze mówiąc, nawet nie wiedziałem, że to możliwe, ale proszę bardzo. AKTUALIZACJA Moja interpretacja tego kroku wydaje się być zła i lepiej wyjaśniona przez wizzwizz4 .echo path
? są używane %% dla zmiennych?
set greeting=Hello
a następnie echo %greeting%
. Myląco PATH
zdarza się, że jest zarówno poleceniem, jak i zmienną, więc wpisanie polecenia path
lub echo %path%
będzie miało taki sam wynik.
$PATH
na przykład.
echo.
nie jest „poleceniem wypisania nowego wiersza”. Jest to interpreter poleceń Microsoft dla Windows NT cmd
; a echo.
jest to po prostu polecenie drukowania elementu ścieżki, zapewniające, że jeśli element ścieżki jest pusty, nie przełącza się na inną funkcjonalnośćecho
. Pierwszy też echo
powinien być echo.
.
Jest to oparte na podstawianiu zmiennych w wierszu poleceń. %path:;=&echo.%
oznacza „ %path%
, ale zamień wszystkie ;
s na &echo.
”. Oznacza to, że przy set path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:
echo %path:;=&echo.%
staje się:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Ponieważ &
jest to separator poleceń, jest to równoważne z:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
Ze względu na dziwactwa DOS Batch, echo.
jest identyczny, z echo
wyjątkiem sytuacji, gdy nic po nim nie ma. W takim przypadku po prostu nic nie drukuje, zamiast mówić, czy ECHO
jest włączony, czy wyłączony. Spowoduje to, że wynik:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
Naprawdę, należy wziąć echo.%path:;=&echo.%
pod uwagę przypadek, w którym %PATH%
zaczyna się od ;
, ale to polecenie i tak jest całkiem sprytne.
Wchodząc w szczegółowe detale, naprawdę echo(
powinno się go używać echo.
. Jest tak, ponieważ echo.
może mieć problemy, gdy plik ma nazwę echo
, i jest powolny, ponieważ musi sprawdzać dysk ( %CD%
i myślę, że cały %PATH%
) za każdym razem, gdy jest uruchamiany. (Nie mam kopii systemu Windows, więc nie mogę jej sam sprawdzić; czy to tylko %CD%
czy gdziekolwiek, %PATH%
że echo
wpłynie to na obecność pliku echo.
i co on robi?)
echo)
, ale tak naprawdę nie pamiętam. ;-(
echo.
to ten, który ludzie krążyli najwięcej lat temu. Jest to jeden z wielu książek. Wydajność nie jest problemem. Dziwne zachowanie, gdy zdarzają się różne pliki, jest. Kiedy napisałem 32-bitowy zamiennik 16-bitowego cmd
w OS / 2, łamanie nazw poleceń w tych znakach interpunkcyjnych i to bardzo nieregularne zachowanie podczas analizowania jest jedną z rzeczy, których celowo nie powielałem, i które nałożyłem na udokumentowane lista różnic. echodot
Zamiast tego wykonałem polecenie zewnętrzne , które można było aliasować echo.
według potrzeb.
echo(
jest jedyną bezpieczną wersją.
echo.
może nie działać .