Board logo

标题: [文件操作] 求一个批处理命令,输出文件名和哈希值 [打印本页]

作者: netdzb    时间: 2019-7-15 11:39     标题: 求一个批处理命令,输出文件名和哈希值

本帖最后由 netdzb 于 2019-7-15 11:42 编辑

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

假设已经有
crc32 文件名

md5 文件名的
计算工具

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


期望输出格式如下:

pk_reward.prof 0E6BDEA8
pk_reward.wav B861E45C
去除背景噪声.bat 6513E6E8
作者: Batcher    时间: 2019-7-15 13:31

  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"
复制代码

作者: netdzb    时间: 2019-7-15 16:39

本帖最后由 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"
作者: Batcher    时间: 2019-7-15 17:32

回复 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
复制代码

作者: netdzb    时间: 2019-7-15 17:52

回复 4# Batcher

findstr是什么意思?可以去掉吧。
作者: Batcher    时间: 2019-7-15 18:41

回复 5# netdzb


    你亲自测试一下就知道了




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2