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 acaratteri conbecho. è usato per stampare una nuova riga&viene utilizzato per separare i comandi, ad esempio echo line1&echo line2stamperà 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=Helloe poi echo %greeting%. Confusamente, PATHsembra essere sia un comando che una variabile, quindi digitando il comando path, o echo %path%avrà lo stesso risultato.
$PATHad 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 echodovrebbe 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 echoed è 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 echofile 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 cmdin 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 echodotcomando esterno , che si potrebbe alias echo.come desiderato.
echo(indica solo la versione sicura.
echo.potrebbe non funzionare .