找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33604|回复: 5

[文件操作] 求一个批处理命令,输出文件名和哈希值

[复制链接]
发表于 2019-7-15 11:39:11 | 显示全部楼层 |阅读模式
本帖最后由 netdzb 于 2019-7-15 11:42 编辑

批量输出某个目录的文件名字,后面跟文件的CRC32值,或者MD5值。
文件名和哈希值之间用一个空格分隔。

假设已经有
crc32 文件名

md5 文件名的
计算工具

这个好像可以利用重定向完成的,但不知道怎么写?
希望能有bat脚本和shell脚本。我就一个帖子里问了。
不另外开贴了。


期望输出格式如下:

pk_reward.prof 0E6BDEA8
pk_reward.wav B861E45C
去除背景噪声.bat 6513E6E8
发表于 2019-7-15 13:31:40 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%i in ('dir /b /a-d') do (
  3.     if "%%i" neq "%~nx0" (
  4.         set /p =%%i <nul
  5.         certutil -hashfile "%%i" MD5 | findstr /v "[^0-9a-z]"
  6.     )
  7. ))>"MD5.log"
复制代码
 楼主| 发表于 2019-7-15 16:39:51 | 显示全部楼层
本帖最后由 netdzb 于 2019-7-15 16:43 编辑

回复 2# Batcher

代码没能完全看懂,问的简单一点吧。
计算当前路径下所有的txt文件,显示

文件名 哈希值。

按照你的意思,我改成这样可以吗?

@echo off
(for %%i in ('*.txt') do (
        set /p =%%i <nul
        certutil -hashfile "%%i" MD5 | %%i
    ))>"MD5.log"
发表于 2019-7-15 17:32:26 | 显示全部楼层
回复 3# netdzb


@echo off
(for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
    if "%%i" neq "%~nx0" (
        set /p =%%i <nul
        certutil -hashfile "%%i" MD5 | findstr /v "[^0-9a-z]"
    )
))>"MD5.log"

获取单个文件的MD5并赋值给变量:
  1. @echo off
  2. for /f %%i in ('certutil -hashfile "1.txt" MD5 ^| findstr /v "[^0-9a-z]"') do (
  3.     set "str=%%i"
  4. )
  5. echo %str%
  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
TAT + 1 感谢,发现了新东西! certutil

查看全部评分

 楼主| 发表于 2019-7-15 17:52:03 | 显示全部楼层
回复 4# Batcher

findstr是什么意思?可以去掉吧。
发表于 2019-7-15 18:41:44 | 显示全部楼层
回复 5# netdzb


    你亲自测试一下就知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:59 , Processed in 0.010758 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表