批处理中实现hash*filename格式输出:解决echo不换行与顺序问题
批处理调整MD5哈希输出顺序的解决方案
原批处理代码输出格式为filename * hash,要改为hash * filename,直接调整echo命令位置会因命令输出换行导致格式异常,可通过以下方法实现目标格式:
修改后的完整代码
@echo off setlocal enabledelayedexpansion for /r %%A in (*.rsgp) do ( :: 捕获certutil输出的MD5哈希,跳过说明行并过滤无关信息 for /f "skip=1 delims=" %%B in ('certutil -hashfile "%%A" MD5 ^| find /v "h"') do ( set "raw_hash=%%B" :: 移除哈希值中默认的空格分隔符 set "clean_hash=!raw_hash: =!" :: 按目标格式输出 echo !clean_hash! * "%%A" ) ) >> file.txt endlocal
关键说明
enabledelayedexpansion启用延迟变量扩展,保证循环内变量修改能实时生效for /f "skip=1 delims=" %%B跳过certutil输出的第一行说明文本,精准捕获纯哈希行set "clean_hash=!raw_hash: =!"去除certutil默认输出的哈希空格分隔符,得到连续的MD5字符串- 通过直接拼接变量输出,彻底避免原方法中因命令换行导致的格式混乱问题
内容的提问来源于stack exchange,提问作者᪵ mesi
相关产品推荐
相关产品推荐

