Board logo

标题: [文本处理] [已解决]批处理如何实现删除多个文件夹里名字重复的txt文件 [打印本页]

作者: iIoveyou    时间: 2022-1-20 16:46     标题: [已解决]批处理如何实现删除多个文件夹里名字重复的txt文件

本帖最后由 iIoveyou 于 2022-1-21 09:49 编辑

如何实现删除多个文件夹里名字重复的txt文件,且只留下所占内存最大的的一个txt文件
若没有重复的txt文件,则不进行操作

顺便问一下:怎么删除之前发的贴子啊Orz 找了半天没找到删除帖子的选项
作者: Batcher    时间: 2022-1-20 19:44

回复 1# iIoveyou


看看这个思路是否满足需求:
  1. @echo off
  2. REM 设置待处理的文件夹路径
  3. set "FolderFrom=C:\Test\A"
  4. REM 设置新的文件夹路径
  5. set "FolderTo=C:\Test\B"
  6. if not exist "%FolderFrom%\" (
  7.     echo 找不到文件夹"%FolderFrom%"
  8.     goto :End
  9. )
  10. if not exist "%FolderTo%\" (
  11.     echo 找不到文件夹"%FolderTo%"
  12.     goto :End
  13. )
  14. for /f "delims=" %%i in ('dir /b /s /a-d "%FolderFrom%"') do (
  15.     echo 正在处理文件 "%%i"
  16.     if not exist "%FolderTo%\%%~nxi" (
  17.         copy /y "%%i" "%FolderTo%\"
  18.     ) else (
  19.         for %%j in ("%FolderTo%\%%~nxi") do (
  20.             if %%~zi gtr %%~zj (
  21.                 copy /y "%%i" "%FolderTo%\"
  22.             )
  23.         )
  24.     )
  25. )
  26. echo 请手工检查文件夹"%FolderTo%"
  27. echo 如果没有问题就删除文件夹"%FolderFrom%"
  28. goto :End
  29. :End
  30. pause
复制代码

作者: iIoveyou    时间: 2022-1-20 22:40

回复  iIoveyou


看看这个思路是否满足需求:
Batcher 发表于 2022-1-20 19:44



    现在的问题是 有很多文件夹和子文件夹 然后txt文件一共有8w多,怎么试验比较合理啊
作者: iIoveyou    时间: 2022-1-20 23:00

回复  iIoveyou


看看这个思路是否满足需求:
Batcher 发表于 2022-1-20 19:44



    用几个文本试了一下 前面好像没问题,把该留下的文件都留下了,但是最后把文件都单独提出来了,我是想让文件还都留在之前的文件夹里
作者: qixiaobin0715    时间: 2022-1-21 08:55

代码中有del命令,慎用,测试前请备份好源文件。
假设要处理的是D:\abc目录下的文件
  1. @echo off
  2. set "FP=D:\abc"
  3. cd /d "%FP%"
  4. setlocal enabledelayedexpansion
  5. (for /r %%i in (*.txt) do (
  6.     set "FS=0000000000%%~zi"
  7.     echo,%%~ni/!FS:~-10!/%%i
  8. ))>tmp1.log
  9. sort tmp1.log>tmp.log
  10. del tmp1.log
  11. for /f "tokens=1-2* delims=/" %%a in (tmp.log) do (
  12.     if "%%a"=="!FN!" del "!FF!"
  13.     set "FN=%%a"
  14.     set "FF=%%c"
  15. )
  16. del tmp.log
  17. pause
复制代码

作者: Batcher    时间: 2022-1-21 09:27

回复 4# iIoveyou


2楼代码第28行下面增加:
删除老文件夹
把新文件夹重命名为老文件夹同样的名字
作者: iIoveyou    时间: 2022-1-21 09:43

代码中有del命令,慎用,测试前请备份好源文件。
假设要处理的是D:\abc目录下的文件
qixiaobin0715 发表于 2022-1-21 08:55



    我先用几个文本试验了,应该没问题,一共八万文件删了重复的四千多 谢谢大佬
作者: iIoveyou    时间: 2022-1-21 09:48

回复  iIoveyou


2楼代码第28行下面增加:
删除老文件夹
把新文件夹重命名为老文件夹同样的名字
Batcher 发表于 2022-1-21 09:27



    已经解决了 谢谢




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