16

我有以下脚本:

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
4

1 回答 1

41

为避免在 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 
    )
)

请注意前面@的 inecho off防止echo off回显。如果你没有,@那么你会看到echo off终端回显,但在那之后回显将关闭。前面的 shell 命令@不会被回显。因此@可用于防止单个命令的回显。

于 2013-10-03T00:42:54.283 回答