All'inizio di uno script batch, ho visto il comando:Differenza tra "@echo off" e "@echo% off"?
@echo %off
Con mia grande sorpresa ha lo stesso effetto di:
@echo off
Qual è l'effetto del prefisso '%'?
All'inizio di uno script batch, ho visto il comando:Differenza tra "@echo off" e "@echo% off"?
@echo %off
Con mia grande sorpresa ha lo stesso effetto di:
@echo off
Qual è l'effetto del prefisso '%'?
Non l'ho mai visto prima. Non funziona nella console cmd - solo in uno script .bat. Ma ho una supposizione.
In una finestra della console cmd, se si @echo off
, risulta che i prompt dei comandi sono nascosti, proprio come in uno script .bat. Per visualizzare nuovamente i prompt, è necessario echo on
. La differenza è che in uno script .bat, i segni di percentuale devono essere raddoppiati per rappresentare un carattere letterale %
, mentre nella console cmd non lo fanno. Il risultato è che @echo %off
in una console cmd risulta nella stringa %off
che viene ripetuta allo stdout.
Con questo in mente, suppongo che l'autore abbia inteso questo trucco per evitare problemi incontrati dagli utenti che copypaste lo script in una finestra della console cmd, piuttosto che come previsto in uno script .bat. Con %
aggiunto, il comando viene neutralizzato nella console, ma raggiunge comunque l'effetto desiderato quando viene eseguito da uno script .bat. Senza lo %
, la console sembrerebbe bloccarsi dopo che tutte le istruzioni sono state completate.
Questo è genio. Volevo solo lasciare un commento per farti sapere. –
mai visto. E infatti, '%' viene rimosso dal parser, quindi non ha alcun effetto (almeno nel puro batch - ma ci sono alcuni batch, qualunque sia lo script ibrido, dove * potrebbe * fare la differenza). Puoi darci una fonte? (dove l'hai visto?) – Stephan
Non l'ho mai visto prima. Non funziona nella console cmd - solo in uno script .bat. Suppongo che sia così che se qualcuno copypastes lo script in una finestra di console piuttosto che in un file .bat, l'incollamento non comporterà l'occultamento dei prompt? – rojo
In un file batch, il singolo segno '%' viene rimosso similmente, quindi l'effetto è lo stesso che non c'era ... – aschipfl