标题: [文本处理] [已解决]批处理如何实现删除多个文件夹里名字重复的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
看看这个思路是否满足需求:- @echo off
- REM 设置待处理的文件夹路径
- set "FolderFrom=C:\Test\A"
- REM 设置新的文件夹路径
- set "FolderTo=C:\Test\B"
-
- if not exist "%FolderFrom%\" (
- echo 找不到文件夹"%FolderFrom%"
- goto :End
- )
- if not exist "%FolderTo%\" (
- echo 找不到文件夹"%FolderTo%"
- goto :End
- )
- for /f "delims=" %%i in ('dir /b /s /a-d "%FolderFrom%"') do (
- echo 正在处理文件 "%%i"
- if not exist "%FolderTo%\%%~nxi" (
- copy /y "%%i" "%FolderTo%\"
- ) else (
- for %%j in ("%FolderTo%\%%~nxi") do (
- if %%~zi gtr %%~zj (
- copy /y "%%i" "%FolderTo%\"
- )
- )
- )
- )
- echo 请手工检查文件夹"%FolderTo%"
- echo 如果没有问题就删除文件夹"%FolderFrom%"
- goto :End
-
- :End
- 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目录下的文件- @echo off
- set "FP=D:\abc"
- cd /d "%FP%"
- setlocal enabledelayedexpansion
- (for /r %%i in (*.txt) do (
- set "FS=0000000000%%~zi"
- echo,%%~ni/!FS:~-10!/%%i
- ))>tmp1.log
- sort tmp1.log>tmp.log
- del tmp1.log
- for /f "tokens=1-2* delims=/" %%a in (tmp.log) do (
- if "%%a"=="!FN!" del "!FF!"
- set "FN=%%a"
- set "FF=%%c"
- )
- del tmp.log
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |