[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
这个更快
  1. @echo off & cd /d "%~dp0"
  2. set /a n=0
  3. (
  4. for /r %%i in (*) do (
  5. coder -show -action getmd5 -file "%%i" 2>nul
  6. echo;
  7. set /a "n+=1"
  8. call title %%n%%
  9. )
  10. ) > "MD5.txt"
  11. pause&exit
复制代码
coder.exe

TOP

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

TOP

回复 8# Batcher


    大佬 能不能在第一段代码的基础上,优化下文件名字有空格不能验证md5的问题。。第一段代码在服务器上是可以运行的,只不过文件名字有空格不能验证。

TOP

回复  304802301
Batcher 发表于 2021-6-11 13:53



    大佬,这个bat在我本机(win10环境)下没问题(有路径+文件名,md5,且换行),但在服务器(win2008R2)环境下只能输出路径+文件名,无md5,且没有换行,是咋回事呢,。

TOP

回复 6# 304802301
  1. @echo off
  2. type nul>"MD5.txt"
  3. for /f "delims=" %%i in ('dir /b /s /a-d') do (
  4.     if "%%~nxi" neq "%~nx0" (
  5.         echo Processing %%i
  6.         set /p =%%i <nul >>"MD5.txt"
  7.         certutil -hashfile "%%i" MD5 | findstr /v "[^0-9a-z]" >>"MD5.txt"
  8.     )
  9. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

没有问题,每个文件验证完毕写入一次
可能程序暂停了。。。
敲下回车空格,鼠标点一下cmd窗口。

TOP

回复 2# Batcher


大佬,能否再帮我优化下,我这边有一个文件夹,里面有将近200万个小文件,我在8号执行的代码,目前已经运行了3*24小时了,txt里没有记录任何文件的md5,cmd窗口也还在运行中,没有输出任何内容。
我现在不清楚是进程卡住了还是正在执行中,也不知道执行的进度是多少了,我怀疑是先全部验证出mad5,驻留在内存中,全部验证完后再一次性写入到txt里。能否帮我优化下,验证出一个文件的md5就立即输出到txt里,方便我查看,感谢

TOP

回复 4# semiuel


    我试过,不行的
不过还是感谢

TOP

第一段代码第10行中do certutil -hashfile %%a MD5>>CMD-md5.txt
给%%a加双引号,改成"%%a"

TOP

  1. @echo off & setlocal EnableDelayedExpansion
  2. type nul>"%~dp0MD5.log"
  3. for /f "delims=" %%a in ('dir /a-d /b /s *.*') do (
  4.     if "%%~nxa" neq "%~nx0" (
  5.     for /f "delims=" %%b in ('certutil -hashfile "%%a" MD5^|findstr /r /be /c:"[0-9a-f][0-9a-f ]*"') do (
  6.         set "MD5=%%b"&set MD5=!MD5:^ =!&echo !MD5! = %%a>>"%~dp0MD5.log"
  7.         )
  8.     )
  9. )
  10. pause
复制代码

TOP

回复 1# 304802301


第二段代码的第2行、第3行改成这样试试:
(for /f "delims=" %%i in ('dir /b /s /a-d') do (
    if "%%~nxi" neq "%~nx0" (
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表