Risposte:
Questa è una soluzione interessante che non avevo mai visto prima. Vorrei provare a spiegare:
echo %path%
. Questo stamperà tutte le directory su un'unica riga separate da punti e virgola ( ;
)%path:a=b%
che sostituirà tutti i a
caratteri conb
echo.
è usato per stampare una nuova riga&
viene utilizzato per separare i comandi, ad esempio echo line1&echo line2
stamperà due righe;
con niente, quindi stampa una nuova riga". Non riesco a trovare alcuna documentazione su questo, quindi è solo la mia interpretazione. Francamente, non sapevo nemmeno che fosse possibile, ma il gioco è fatto. AGGIORNAMENTO La mia interpretazione di questo passaggio sembra essere off ed è meglio spiegata da wizzwizz4 .echo path
? %% sono usati per le variabili?
set greeting=Hello
e poi echo %greeting%
. Confusamente, PATH
sembra essere sia un comando che una variabile, quindi digitando il comando path
, o echo %path%
avrà lo stesso risultato.
$PATH
ad esempio.
echo.
non è "il comando per stampare una nuova riga". Questo è l'interprete dei comandi di Microsoft per Windows NT cmd
,; e il echo.
è semplicemente il comando per stampare un elemento path assicurandosi che se l'elemento path è vuoto non passi all'altra funzionalità diecho
. Anche il primo echo
dovrebbe esserlo echo.
.
Questo sta usando la sostituzione della variabile da riga di comando. %path:;=&echo.%
significa " %path%
, ma sostituisci tutte le ;
s con &echo.
". Ciò significa che, con set path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:
echo %path:;=&echo.%
diventa:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Poiché &
è un separatore di comandi, questo equivale a:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
A causa di stranezze di DOS Batch, echo.
è identico a echo
tranne quando non c'è nulla dopo. In tal caso, non stampa semplicemente nulla, invece di dirti se ECHO
è acceso o spento. Questo renderà l'output:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
In realtà, dovrebbe essere echo.%path:;=&echo.%
il caso in cui %PATH%
inizia con a ;
, ma questo comando è comunque abbastanza intelligente.
Entrare in dettagli dettagliati, in realtà echo(
dovrebbe essere usato al posto di echo.
. Questo perché echo.
può avere problemi quando hai un file chiamato echo
ed è lento perché deve controllare il disco ( %CD%
e penso anche a tutti %PATH%
) ogni volta che viene eseguito. (Non ho una copia di Windows, quindi non posso controllarlo da solo; è solo %CD%
o dovunque %PATH%
che la presenza del echo
file influenzerà echo.
e cosa fa?)
echo)
, ma non ricordo davvero. ;-(
echo.
è quello che le persone circolavano di più, anni fa. È quello in molti libri. L'efficienza non è il problema. È un comportamento strano quando si verificano vari file. Quando ho scritto una sostituzione a 32 bit per il 16 bit cmd
in OS / 2, la rottura dei nomi dei comandi in questi caratteri di punteggiatura e questo comportamento di analisi altamente irregolare è una delle cose che deliberatamente non ho duplicato e che ho messo sul documentato elenco di differenze. Ho fatto invece un echodot
comando esterno , che si potrebbe alias echo.
come desiderato.
echo(
indica solo la versione sicura.
echo.
potrebbe non funzionare .