Na początku skryptu wsadowego, widziałem polecenie:Różnica między "@echo off" i "@echo% off"?
@echo %off
Ku mojemu zaskoczeniu jest to ten sam efekt:
@echo off
Jaki jest efekt „%” prefiks?
Na początku skryptu wsadowego, widziałem polecenie:Różnica między "@echo off" i "@echo% off"?
@echo %off
Ku mojemu zaskoczeniu jest to ten sam efekt:
@echo off
Jaki jest efekt „%” prefiks?
Nigdy wcześniej tego nie widziałem. Nie działa na konsoli cmd - tylko w skrypcie .bat. Ale zgaduję.
W oknie konsoli cmd, jeśli @echo off
, powoduje to ukrywanie podpowiedzi poleceń, tak jak w skrypcie .bat. Aby ponownie wyświetlić monity, musisz: echo on
. Różnica polega na tym, że w .bat skryptu procent znaki muszą być podwojone do reprezentacji literalnej znaku %
ciąg, podczas gdy w konsoli cmd nie. Powoduje to, że @echo %off
w konsoli cmd powoduje, że ciąg %off
jest odtwarzany echem na standardowe wyjście.
Biorąc to pod uwagę, domyślam się, że autor zamierzał użyć tego hacka, aby uniknąć problemów napotykanych przez użytkowników, którzy kopiują skrypt do okna konsoli cmd, a nie jak zamierzono w skrypcie .bat. Po dodaniu %
polecenie jest unieważniane w konsoli, ale nadal osiąga zamierzony efekt po uruchomieniu ze skryptu .bat. Bez %
konsola wydaje się zawieszać po zakończeniu wszystkich instrukcji.
To jest geniusz. Chciałem tylko rzucić komentarz, który cię poinformował. –
Nigdy tego nie widziałem. I rzeczywiście, '%' jest usuwany przez parser, więc to nie ma znaczenia (przynajmniej w czystej partii - ale istnieją pewne wsadowe cokolwiek hybrydowe skrypty, gdzie mogłyby * * czynią różnicę). Czy możesz podać nam źródło? (gdzie to widziałeś?) – Stephan
Nigdy wcześniej tego nie widziałem. Nie działa na konsoli cmd - tylko w skrypcie .bat. Przypuszczam, że to tak, że jeśli ktoś copypastes skrypt w oknie konsoli, zamiast pliku .bat, pasta nie spowoduje komunikaty są ukryte? – rojo
w pliku wsadowym, pojedynczy '%' znak zostanie usunięty simle, stąd efekt jest taki sam, ponieważ nie było tam ... – aschipfl