找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21103|回复: 7

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

[复制链接]
发表于 2022-1-20 16:46:48 | 显示全部楼层 |阅读模式
本帖最后由 iIoveyou 于 2022-1-21 09:49 编辑

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

顺便问一下:怎么删除之前发的贴子啊Orz 找了半天没找到删除帖子的选项
发表于 2022-1-20 19:44:12 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2022-1-20 22:40:12 | 显示全部楼层
回复  iIoveyou


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



    现在的问题是 有很多文件夹和子文件夹 然后txt文件一共有8w多,怎么试验比较合理啊
 楼主| 发表于 2022-1-20 23:00:20 | 显示全部楼层
回复  iIoveyou


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



    用几个文本试了一下 前面好像没问题,把该留下的文件都留下了,但是最后把文件都单独提出来了,我是想让文件还都留在之前的文件夹里
发表于 2022-1-21 08:55:30 | 显示全部楼层
代码中有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技术 +1 收起 理由
iIoveyou + 1 谢谢

查看全部评分

发表于 2022-1-21 09:27:37 | 显示全部楼层
回复 4# iIoveyou


2楼代码第28行下面增加:
删除老文件夹
把新文件夹重命名为老文件夹同样的名字
 楼主| 发表于 2022-1-21 09:43:20 | 显示全部楼层
代码中有del命令,慎用,测试前请备份好源文件。
假设要处理的是D:\abc目录下的文件
qixiaobin0715 发表于 2022-1-21 08:55



    我先用几个文本试验了,应该没问题,一共八万文件删了重复的四千多 谢谢大佬
 楼主| 发表于 2022-1-21 09:48:41 | 显示全部楼层
回复  iIoveyou


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



    已经解决了 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 13:54 , Processed in 0.021482 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表