2013-10-03 8 views
9

Mam następujący scenariusz:Jak zatrzymać mój plik wsadowy przed wydrukowaniem kodu, który jest uruchomiony?

FOR %%i IN (1 2 3) DO (  
    IF %%i==1 ( 
     ECHO %%i 
    ) 
    IF %%i==2 ( 
     ECHO %%i 
    ) 
    IF %%i==3 ( 
     ECHO %%i 
    ) 
) 

Chciałam wydrukować

1 
2 
3 

bo będzie ponownie stosując tę ​​samą logikę napisać pełniejszą zadanie ... ja nie jestem Facet z Windowsa i nie mam pojęcia, jak to zrobić w batch. Zamiast Dostaję:

c:\>FOR %i IN (1 2 3) DO (
IF %i == 1 (ECHO %i ) 
IF %i == 2 (ECHO %i ) 
IF %i == 3 (ECHO %i ) 
) 

c:\>(
IF 1 == 1 (ECHO 1 ) 
IF 1 == 2 (ECHO 1 ) 
IF 1 == 3 (ECHO 1 ) 
) 
1 

c:\>(
IF 2 == 1 (ECHO 2 ) 
IF 2 == 2 (ECHO 2 ) 
IF 2 == 3 (ECHO 2 ) 
) 
2 

c:\>(
IF 3 == 1 (ECHO 3 ) 
IF 3 == 2 (ECHO 3 ) 
IF 3 == 3 (ECHO 3 ) 
) 
3 
+0

Prawdopodobnie chcesz przeprowadzić analizę plików, a tym samym mieć '/ L', ale ta opcja nie działa w tym prostym przypadku. Jeśli go nie używasz, otrzymasz '1 2 3' zgodnie z oczekiwaniami. – lurker

+0

@mbratch Edytuję moje pytanie ... – cybertextron

Odpowiedz

24

Aby uniknąć echo poleceń systemu Windows w skrypcie powłoki, użyj @echo off:

@ECHO OFF 
FOR %%i IN (1 2 3) DO (  
    IF %%i==1 ( 
     ECHO %%i 
    ) 
    IF %%i==2 ( 
     ECHO %%i 
    ) 
    IF %%i==3 ( 
     ECHO %%i 
    ) 
) 

Uwaga poprzedniego @ w echo off zapobiega echo off z echem. Jeśli nie masz numeru @, zostanie wyświetlone echo echo off, a następnie echo będzie wyłączone po tym punkcie. Polecenie powłoki poprzedzone numerem @ nie jest powtarzane. Tak więc @ może być użyty w celu uniknięcia echa poszczególnych poleceń.

Powiązane problemy