我有一个批处理文件,其中有一个 IF/ELSE IF block 。我不希望 block 本身被“回显”给用户,因为这样做会打印出一个完整的复杂逻辑屏幕,很难准确理解它正在执行什么。但是,我希望将 block 中实际执行的命令回显给用户。
在第一个 IF 前面放置一个 @ 会隐藏整个语句,而且似乎没有办法“取消隐藏”部分。尝试使用 @echo off 和 @echo on 来关闭主语句的屏幕报告和逻辑分支的屏幕报告似乎也没有做到。帮忙?
最佳答案
它不是很漂亮,但它有效:
@echo off
if 1==1 (
echo on
for %%a in (1) do echo command 1
for %%a in (1) do echo command 2
)
您可以使用一个小宏来减少输入量。此示例还展示了如何处理嵌入式 FOR 命令。对于 DO() 子句中的所有命令,() 前面的 @ 有效地作为 ECHO OFF。没有它,整个 (...) 以及其中的每个命令都会被回显。
@echo off
setlocal
set show=for %%a in (1) do
if 1==1 (
echo on
%show% echo command 1
%show% echo command 2
for /l %%n in (1 1 5) do @(
%show% echo loop %%n A command IS shown
echo loop %%n B command is NOT shown
)
)
关于windows - 在批处理文件中隐藏逻辑结构,但显示实际执行的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980998/