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

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

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

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

顺便问一下:怎么删除之前发的贴子啊Orz 找了半天没找到删除帖子的选项

回复  iIoveyou


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



    已经解决了 谢谢

TOP

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



    我先用几个文本试验了,应该没问题,一共八万文件删了重复的四千多 谢谢大佬

TOP

回复 4# iIoveyou


2楼代码第28行下面增加:
删除老文件夹
把新文件夹重命名为老文件夹同样的名字
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

代码中有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
复制代码
1

评分人数

TOP

回复  iIoveyou


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



    用几个文本试了一下 前面好像没问题,把该留下的文件都留下了,但是最后把文件都单独提出来了,我是想让文件还都留在之前的文件夹里

TOP

回复  iIoveyou


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



    现在的问题是 有很多文件夹和子文件夹 然后txt文件一共有8w多,怎么试验比较合理啊

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表