windows - 在批处理文件中隐藏逻辑结构,但显示实际执行的命令

标签 windows command-line batch-file

我有一个批处理文件,其中有一个 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/

相关文章:

perl - 如何在 Perl 中使用反引号捕获两个不同变量中的 STDOUT 和 STDERR

batch-file - 通过命令行使用苏门答腊pdf批量打印pdf

c++ - 在 Windows 上构建 Elsa

windows - 如何将不断变化的网页存储在变量中?

java - 无法使用包从命令行运行多类程序

java - 通知 java 从哪里导入(lib)

batch-file - 批量击键

sql-server - 使用转义引号将 SQL 数据库批量导出为 CSV

c# - 如何在Windows C#中获取文件-文件夹的创建时间(甚至毫秒)

python - Windows 10 上的 Spark。 'Files\Spark\bin\..\jars"“\”未被识别为内部或外部命令