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

一楼表达不严谨,抱歉。

个别 "*(1).pdf",是独一份的,还不能删除。

豆包生成了个,80那里不会改。
  1. for /r "%dir%" %%F in (*.*) do (
  2.     set "file=%%~nF"
  3.     set "size=%%~zF"
  4.     rem 检查是否已经处理过这个大小的文件
  5.     if defined sizes[!size!] (
  6.         rem 检查文件名相似度
  7.         set "similar=false"
  8.         for %%A in (!sizes[!size!]!) do (
  9.             if "!file!"=="%%~nA" (
  10.                 set "similar=true"
  11.                 goto :skip
  12.             ) else (
  13.                 call :isSimilar "!file!" "%%~nA"
  14.                 if!similarity! geq 80 (
  15.                     set "similar=true"
  16.                     goto :skip
  17.                 )
  18.             )
  19.         )
  20.         if!similar! equ false (
  21.             set "sizes[!size!]=!sizes[!size!]! %%F"
  22.         )
  23.     ) else (
  24.         set "sizes[!size!]=%%F"
  25.     )
  26.     :skip
  27. )
  28. rem 遍历所有大小分组,删除除第一个文件外的其他文件
  29. for /f "tokens=2 delims==" %%A in ('set sizes[') do (
  30.     set "count=0"
  31.     for %%B in (%%A) do (
  32.         if!count! equ 0 (
  33.             set "firstFile=%%B"
  34.         ) else (
  35.             del "%%B"
  36.         )
  37.         set /a count+=1
  38.     )
  39. )
  40. echo Done.
  41. pause
  42. goto :eof
  43. :isSimilar
  44. set "str1=%~1"
  45. set "str2=%~2"
  46. set "similarity=0"
  47. for /l %%I in (1,1,20) do (
  48.     set "char1=!str1:~%%I,1!"
  49.     set "char2=!str2:~%%I,1!"
  50.     if defined char1 if defined char2 (
  51.         if "!char1!"=="!char2!" (
  52.             set /a similarity+=5
  53.         )
  54.     ) else (
  55.         goto :eof
  56.     )
  57. )
  58. goto :eof
复制代码

TOP

  1. del "*(1).pdf"
复制代码
bat小白,请多指教!谢谢!

TOP

返回列表