[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理如何获取文件md5?

1、第一段代码如下
(此代码是获取文件的md5,但遇到文件名字有空格的情况,会提示CertUtil: -hashfile 失败: 0x80070002 (WIN32: 2 ERROR_FILE_NOT_FOUND) CertUtil: 系统找不到指定的文件。如何解决?)
  1. title md5批量生成脚本-by miles
  2. setlocal enabledelayedexpansion
  3. %~d0
  4. cd %~dp0
  5. if exist CMD-Name.txt del CMD-Name.txt
  6. for /R %%s in (.,*) do (
  7. echo %%s
  8. ) >>CMD-Name.txt
  9. if exist CMD-md5.txt del CMD-md5.txt
  10. for /f "skip=1" %%a in (CMD-Name.txt) do certutil -hashfile %%a MD5>>CMD-md5.txt
  11. echo md5生成完毕
复制代码
====================================================================================================================================
2、第二段代码如下
(此代码可以获取文件的md5,包括文件名字有空格的文件,也能获取大md5,但有个致命的缺点,就是只能获取当前文件夹的md5,下面的文件夹里的文件就没法获取了,如何优化?)
  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.txt"
复制代码

回复 25# 304802301


    code.exe和bat两个文件就行了,asm文件是源码,可以丢弃

TOP

回复 24# went


  经验证,现在无问题了,感谢大佬。

附代码:(coder.asm、coder.exe、String.asm)三个文件与bat放一起,且电脑需要设置下:gpedit.msc→(计算机配置和用户配置,都要处理)→ 管理模板→Windows组件→Windows错误报告→(禁用Windows错误报告和组织显示用户界面上的关键错误,都要处理)→都设置成“已启用”)
@echo off & cd /d "%~dp0"
set /a n=0
(
        for /r %%i in (*) do (
set /p="%%i|%%~nxi|"<nul
coder -show -action getmd5 -file "%%i" 2>nul
echo;

                set /a "n+=1"
                call title %%n%%
        )
) > "cmd-get-md5-2.txt"
pause&exit

TOP

  1. set /p="%%i|%%~nxi|"<nul
  2. coder -show -action getmd5 -file "%%i" 2>nul
  3. echo;
  4. set /a "n+=1"
复制代码
回复 23# 304802301

TOP

回复 22# went


    大佬,报错的问题我解决了(百度了下,禁用错误提示就行了),然后下面这个代码只有输出md5,能不能同时也输出路径和文件名的?就是路径+文件名+MD5+换行(没有其他的要求了)


   @echo off & cd /d "%~dp0"
set /a n=0
(
        for /r %%i in (*) do (
                coder -show -action getmd5 -file "%%i" 2>nul
                echo;
                set /a "n+=1"
                call title %%n%%
        )
) > "MD5.txt"
pause&exit

TOP

TOP

回复 19# went


    问题签名:
  问题事件名称:        APPCRASH
  应用程序名:        coder.exe
  应用程序版本:        1.0.0.0
  应用程序时间戳:        6017b448
  故障模块名称:        KERNELBASE.dll
  故障模块版本:        6.1.7601.24545
  故障模块时间戳:        5e0eb7f5
  异常代码:        c0000005
  异常偏移:        0000e082
  OS 版本:        6.1.7601.2.1.0.274.10
  区域设置 ID:        2052
  其他信息 1:        0a9e
  其他信息 2:        0a9e372d3b4ad19135b953a78882e789
  其他信息 3:        0a9e
  其他信息 4:        0a9e372d3b4ad19135b953a78882e789

联机阅读隐私声明:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
  C:\Windows\system32\zh-CN\erofflps.txt

TOP

回复 19# went


    使用了这个方法,有几点要反馈下:
1:我本机win10,验证md5的过程比较顺利,但在服务器win2008r2环境下,每验证一个文件的md5都会提示“编码解码工具1.0.2(Code By went) 已停止工作,Windows 可以联机检查该问题的解决方案。”点击关闭程序又能正常验证下一个文件。
2、输出的txt能否帮忙加上路径和文件名的?

TOP

回复 18# 304802301


    下载附件解压,coder.exe和bat文件放到一起http://www.bathome.net/thread-57518-1-1.html

TOP

回复 17# went


    @echo off & cd /d "%~dp0"
set /a n=0
(
        for /r %%i in (*) do (
                coder -show -action getmd5 -file "%%i" 2>nul
                echo;
                set /a "n+=1"
                call title %%n%%
        )
) > "MD5.txt"
pause&exit


这个吗?输出的是空行

TOP

回复 15# 304802301


    12楼的呢

TOP

回复 9# 304802301


在服务器上,请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 304802301 于 2021-6-11 19:57 编辑

回复 14# went


大佬,这个语句不能用在服务器系统上吗?我本机win10无问题,服务器win2008 r2,有路径,有文件名,但无md5,也不会换行。。。。。。。。

TOP

回复 13# 304802301

路径|文件名|MD5
  1. @echo off & cd /d "%~dp0"
  2. set /a n=0
  3. (
  4. for /r %%i in (*) do (
  5. set /p="%%i|%%~nxi|"<nul
  6. certutil -hashfile "%%i" MD5 | findstr /v "[^0-9a-z]"
  7. set /a "n+=1"
  8. call title %%n%%
  9. )
  10. ) > "MD5.txt"
  11. pause&exit
复制代码

TOP

回复 11# went


能不能在这个基础上加一个路径和文件名?
完整的文件路径+文件名+MD5,换行。
感谢

TOP

返回列表