如何阻止我的批处理文件打印正在运行的代码?

cyb*_*ron 13 windows batch-file

我有以下脚本:

FOR %%i IN (1 2 3) DO (     
    IF %%i==1 ( 
       ECHO %%i 
    )
    IF %%i==2 ( 
       ECHO %%i 
    )
    IF %%i==3 ( 
       ECHO %%i 
    )
)
Run Code Online (Sandbox Code Playgroud)

我只想打印

1
2
3
Run Code Online (Sandbox Code Playgroud)

因为我将再次使用相同的逻辑来编写更完整的任务......我不是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
Run Code Online (Sandbox Code Playgroud)

lur*_*ker 33

要避免在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 
    )
)
Run Code Online (Sandbox Code Playgroud)

请注意前面@的内容echo off可防止echo off回显.如果您没有,@那么您将看到echo off回显到终端,但在此之后回声将关闭.前面@没有回显的shell命令.因此@可用于防止单个命令的回显.