Batch file 如何在日志文件中打印命令行本身以进行日志跟踪?

Batch file 如何在日志文件中打印命令行本身以进行日志跟踪?,batch-file,Batch File,我有一个通过.bat文件调用的java代码。这批货很好用。有没有办法将我正在执行的命令行打印到标准输出(日志)文件中 例如,我的命令是 call dpp.bat -r %BASE_URL% views -af xyz.csv >> creation.log 2>&1 在我的bat文件中,我有多种不同类型的此类命令。在执行此单个批处理文件时,所有内容都会一个接一个地执行,所有日志都会写入该单个文件creation.log。用户看不到日志,哪个命令行执行了什么 是否有一种

我有一个通过.bat文件调用的java代码。这批货很好用。有没有办法将我正在执行的命令行打印到标准输出(日志)文件中

例如,我的命令是

call dpp.bat -r %BASE_URL% views -af xyz.csv >> creation.log 2>&1
在我的bat文件中,我有多种不同类型的此类命令。在执行此单个批处理文件时,所有内容都会一个接一个地执行,所有日志都会写入该单个文件creation.log。用户看不到日志,哪个命令行执行了什么


是否有一种简单的方法,比如添加一些行,将命令行也打印到日志文件中?

如果我理解正确,您希望将命令回显和命令输出都写入日志文件

要实现这一点,您可以执行以下操作:

  • 将要登录的代码放入子例程中,然后由调用该子例程
  • 仅将
    调用
    命令的输出发送到日志文件
  • @echo off
    放入批处理文件的主部分
  • @echo打开
    放入子程序
  • 别忘了把它放在主要部分的末尾
以下是一个例子:

@rem//Turn命令在主节中回显关闭:
@回音
@rem//仅将'call'的输出重定向到日志文件:
调用:SUB>>“creation.log”2>&1
@rem//终止主要部分:
@退出/B
:SUB
@rem//Turn命令在小节中回显:
@呼应
@rem/*将所有要登录的命令行放在此处;
@rem确保这些行前面不带“@”:*/
调用dpp-r%BASE\u URL%views-af xyz.csv
@rem//终止小节:
@退出/B

或者,您可以将每个命令放置到只迭代一次的

@rem//Turn命令回显:
@呼应
@rem//将所有要登录到“for”循环的命令行放置在一次迭代中:
@(对于(.)中的%%#请调用dpp-r%BASE_URL%views-af xyz.csv)>“creation.log”2>&1
@rem//终止脚本:
@退出/B

实际上它非常简单,只需将
echo%*
放在命令行中就可以打印传递的参数。

为什么要使用
Call
?如果你移除它会发生什么?如果不包括
@Echo Off
,会发生什么?因为调用会执行另一批“dpp”(在本例中),所以使用
dpp.cmd
dpp.bat
会更容易,因为您绝对没有告诉我们。我已从您的问题中删除了不相关的标记(基于您提供的信息),并修改了您的代码,以更清楚地表明您正在调用
.bat
文件。