如何修改CMD合并日志命令,在首行写入源日志文件名
解决方案
直接使用copy命令无法实现给每个日志内容添加文件名标记的需求,需要用批处理的循环遍历逻辑来处理每个日志文件,具体代码如下:
@echo off set "merged_log=all_log.log" :: 清空目标合并日志(不需要清空的话可删除此行) echo. > %merged_log% :: 遍历当前目录下所有.log文件 for %%f in (*.log) do ( :: 跳过合并后的日志文件本身,避免重复写入 if not "%%f"=="%merged_log%" ( :: 写入文件名标识(可根据需求调整格式) echo ------------------------------ >> %merged_log% echo 【来源日志文件:%%f】 >> %merged_log% echo ------------------------------ >> %merged_log% :: 追加当前日志的内容到合并文件 type "%%f" >> %merged_log% :: 添加空行分隔不同日志的内容 echo. >> %merged_log% ) )
代码说明:
@echo off:关闭命令行的指令回显,让输出更干净set "merged_log=all_log.log":定义合并后的日志文件名,方便后续修改echo. > %merged_log%:清空目标文件,如果需要保留之前的合并日志,把这行删掉改成echo. >> %merged_log%即可for %%f in (*.log):遍历当前目录下所有.log后缀的文件if not "%%f"=="%merged_log%":跳过合并后的日志文件,防止把它自己再写入一次- 中间的
echo语句用来添加文件名标记和分隔线,你可以根据喜好调整格式(比如用等号、星号作为分隔符) type "%%f" >> %merged_log%:把当前日志文件的内容追加到合并文件中echo. >> %merged_log%:在每个日志内容后添加空行,让不同日志的内容区分更明显
替换你原来的copy *.log all_log.log命令为这段批处理代码,就能在合并后的日志里清晰看到每段内容对应的源日志文件名了。
内容的提问来源于stack exchange,提问作者Anshari
相关产品推荐
相关产品推荐

