2013-10-03 49 views
9

我有以下脚本:如何阻止我的批处理文件打印正在运行的代码?

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

我只是想打印

1 
2 
3 

,因为我将再次使用相同的逻辑来写一个更完整的任务......我不是一个Windows的家伙,我不知道如何去做batch。 相反,我得到:

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

你可能想做文件解析,因此有'/ L',但是这个选项在这种简单的情况下不起作用。如果你离开它,你会得到预期的'1 2 3'。 – lurker

+0

@mbratch我编辑我的问题... – cybertextron

回答

24

为了避免回荡在shell脚本的Windows命令,使用@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 
    ) 
) 

注意在echo off前面@防止echo off从呼应。如果你没有@,那么你会看到echo off回显到终端,但之后回声将会关闭。前面有一个shell命令@未被回显。所以@可以用来防止个别命令的回声。

相关问题