Board logo

标题: [数值计算] bat如何计算出文件的eD2k_HASH(仿照LinkCreator0.7) [打印本页]

作者: eldenring    时间: 2021-5-13 04:59     标题: bat如何计算出文件的eD2k_HASH(仿照LinkCreator0.7)

本帖最后由 eldenring 于 2021-5-13 05:02 编辑

像这个帖子里的工具、python 生成同样的链接格式
https://www.52pojie.cn/thread-1060916-1-1.html


linkcreator0.7 百度一下就能下载。

P.S. 如果能解决的话,希望能进一步扩展成:在一个父文件夹下,放入bat,点击即可在其多个子文件夹里生成各自独立的所有文件的批量ed2k(大佬们应该能理解吧)
作者: xp3000    时间: 2021-5-13 06:45

本帖最后由 xp3000 于 2021-5-13 20:06 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. if not exist "C:\Windows\System32\ed2ksum.exe" (
  4.     没有ed2ksum,请前往下面地址或其他网站下载,放入C:\Windows\System32
  5.     echo,http://bcn.bathome.net/s/tool/index.html?key=ed2ksum
  6. pause&exit /b
  7. )
  8. for /f "delims=" %%i in ('"dir /a/s/b/on *.*"') do (
  9.     if not "%%~xi"=="%~x0" (
  10.     for /f "tokens=1,* delims= " %%j in ('ed2ksum.exe "%%i"') do (
  11.         echo ed2k://^|file^|%%~nxi^|%%~zi^|%%j^|/
  12.         )
  13.     )
  14. )>>ed2k.txt
  15. set n=0
  16. for /f %%i in (ed2k.txt) do if '%%i' neq '' set /a n+=1
  17. if exist %n%个文件ed2k.txt (move /y ed2k.txt %n%个文件ed2k.txt) else (ren ed2k.txt %n%个文件ed2k.txt)
  18. pause
复制代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. if not exist "C:\Windows\System32\ed2ksum.exe" (
  4.     没有ed2ksum,请前往下面地址或其他网站下载,放入C:\Windows\System32
  5.     echo,http://bcn.bathome.net/s/tool/index.html?key=ed2ksum
  6. pause&exit /b
  7. )
  8. set n=0
  9. for /f "delims=*" %%i in ('dir /b /ad /s *') do (
  10. setlocal
  11.     pushd %%i
  12.     for /f "delims=*" %%j in ('dir /a-d /b "*.*"^|findstr /i /v "txt$"') do (
  13.         set /a n+=1&set size=%%~zj
  14.         for /f "delims=* " %%k in ('ed2ksum.exe "%%j"') do (
  15.             echo ed2k://^|file^|%%~nxj^|!size!^|%%k^|/
  16.         )
  17.     )>>ed2k.txt
  18. if exist !n!个文件ed2k.txt (move /y ed2k.txt !n!个文件ed2k.txt>nul) else (ren ed2k.txt !n!个文件ed2k.txt)
  19. endlocal
  20. popd
  21. )
  22. pause
复制代码
呃~~~有两个问题没注意看,补上
作者: eldenring    时间: 2021-5-13 07:54

回复 2# xp3000


    谢谢老哥热心解答!不过我发现路径中有空格就无法计算了… 然后我希望能指定任何后缀的文件就好了
作者: eldenring    时间: 2021-5-13 07:58

本帖最后由 eldenring 于 2021-5-13 08:00 编辑

如果它能进一步延伸,我希望还能实现这样:




作者: 523066680    时间: 2021-5-13 08:18

试了一下 ed2k_hash  http://ed2k-tools.sourceforge.net/ed2k_hash.shtml
执行
  1. ed2k_hash.exe *
复制代码
就可以生成当前目录所有文件的ed2k
作者: xp3000    时间: 2021-5-13 09:23

回复 3# eldenring

已改
作者: eldenring    时间: 2021-5-13 17:15

本帖最后由 eldenring 于 2021-5-13 17:21 编辑

回复 2# xp3000


    感谢老大激情解答!!第一个代码完美了。不过第二个作延伸功能的代码 生成的ed2k.txt似乎不出现计算文件的完整中文名,txt里面的文件名只显示了数字、字母… 而且我是想表示全部子文件夹各自都计算出来,不是指首个子文件夹…



作者: xp3000    时间: 2021-5-13 19:58

回复 7# eldenring
ed2ksum不支持中文,现在改过来了,下面是另外一个工具
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. if not exist "C:\Windows\System32\ed2k_hash.exe" (
  4.     没有ed2k-tools,请前往下面地址或其他网站下载,放入C:\Windows\System32
  5.     echo,http://ed2k-tools.sourceforge.net/ed2k_hash.shtml
  6. pause&exit /b
  7. )
  8. set n=0
  9. for /f "delims=*" %%i in ('dir /b /ad /s *') do (
  10. setlocal
  11.     pushd %%i
  12.     for /f "delims=*" %%j in ('dir /a-d /b "*.*"^|findstr /i /v "txt$"') do (set /a n+=1
  13.         for /f "delims=*" %%k in ('ed2k_hash.exe "%%j"') do (
  14.             echo %%k/
  15.         )
  16.     )>>ed2k.txt
  17. if exist !n!个文件ed2k.txt (move /y ed2k.txt !n!个文件ed2k.txt>nul) else (ren ed2k.txt !n!个文件ed2k.txt)
  18. endlocal
  19. popd
  20. )
  21. pause
复制代码

作者: eldenring    时间: 2021-5-13 22:18

回复 8# xp3000


    非常棒,老哥。
子文件夹这个 好像还是有点不完美,我用notepad++编辑器最新版,copy代码进新建的bat,选择了ansi编码,若是默认utf-8会使输出的txt文件名和内容乱码。

notepad++ 我还习惯用它来打开txt,但有些奇怪 子文件夹的ed2k.txt会以utf-8编码显示,是乱码来的,得手动换成ansi来查看。如果记事本打开 就是ansi编码显示,正常无乱码。

不知还有没有办法让它转换成utf-8的正常中文结果…
作者: xp3000    时间: 2021-5-13 22:50

增加子文件夹,第十行dir /b /ad /s *改为dir /a:d /b /s *
作者: eldenring    时间: 2021-5-14 19:03

回复 10# xp3000


    感谢老哥的耐心,我想给你发个红包,可以短消息发QR Code
作者: xp3000    时间: 2021-5-14 19:28

http://bbs.bathome.net/thread-3473-1-1.html
如果有心可以支持下论坛维护
【论坛捐助支付宝账号】
作者: rockjean    时间: 2021-5-15 14:49

回复 4# eldenring


    这个是windows arm系统吗?
作者: eldenring    时间: 2021-5-15 20:14

回复 13# rockjean


    20H2(操作系统内部版本 19042.985)

应该是最新的。运行一个吾爱的ed2k.py出了问题,就来这询问大佬




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