Board logo

标题: [文件操作] 多文件提取的批处理 [打印本页]

作者: wchong    时间: 2019-6-18 15:58     标题: 多文件提取的批处理

在分区下许有多文件夹,每个文件夹里有若干个.pds后缀的文件,我想把每个不相同的文件提取一个到自定义文件夹   例,D\a文件夹,
因为文件命名比较乱,不知道怎么排除相同的文件

如有相同规律的文件,只提取其中一个。例图片

例图二,也提取其中一个文件
作者: miqilaosu    时间: 2019-6-18 16:11

规则是什么啊,比如有同名文件怎么处理?是继续通过大小判断,还是直接改名?
作者: wchong    时间: 2019-6-18 16:13

回复 2# miqilaosu


    根据文件名,要是有规律的文件名,例26,27,28,29,只提取其中的一个
作者: miqilaosu    时间: 2019-6-18 16:31

你的所有文件都有-吗?
作者: wchong    时间: 2019-6-18 16:37

回复 4# miqilaosu


    不是的
作者: miqilaosu    时间: 2019-6-18 16:49

本帖最后由 miqilaosu 于 2019-6-18 17:17 编辑

没在规律不好删,
  1. @echo off
  2. for /f "tokens=1,2 delims=-" %%i in ('dir /a-d /s /b *.pds')  do (
  3. if not exist "d:\a\%%i%%j" (
  4. echo F|xcopy "%%i-%%j" "D:\b\"
  5. ren "%%~ni*.pds" "%%~ni*.wpds"
  6. )
  7. )
复制代码
所有代码结束后运行下面代码把后辍名改回来
  1. ren *.wpds *.pds
复制代码
要是都有杠的可以这样操作,或者你用读取文件名的方法,取前几个字符的方法来做判断 其它的都改后缀名,全部操作完,在把后缀名改回去,后缀名是什么自己想,最好差异大点,不然容易误操作
  1. set var=%%i
  2. var=%var:~0,6%
复制代码
没有杠的就取前几位的方法,比如把你的文件名取前6位后边用通配符加后缀名查找,和前边一样也是,只操做第一个,操作完其它相近的全都改后缀名,先多取几位,然后慢慢减少也许会好点,等所有循环结束,别忘了把后缀名改回来
作者: wchong    时间: 2019-6-18 17:44

回复 6# miqilaosu


    不是要删除,是把不相同的文件提取到同一个文件夹
作者: Batcher    时间: 2019-6-18 22:02

回复 1# wchong


测试代码之前请先做好备份
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 设置待处理的文件夹
  4. set "SrcFolder=D:\Test"
  5. REM 设置提取到哪个文件夹
  6. set "DstFolder=D:\A"
  7. if not exist "%DstFolder%" (
  8.     md "%DstFolder%"
  9. )
  10. pushd "%SrcFolder%"
  11. for /f "delims=" %%i in ('dir /b /s /a-d *.pds') do (
  12.     echo 正在检查文件 %%i
  13.     for /f "tokens=1 delims=-" %%j in ("%%~nxi") do (
  14.         if not defined _%%j (
  15.             echo --- 复制文件 %%i
  16.             copy /y "%%i" "%DstFolder%"
  17.             set _%%j=1
  18.         )
  19.     )
  20. )
  21. endlocal
复制代码

作者: miqilaosu    时间: 2019-6-20 08:49

回复 7# wchong


    不是删除REN 是改名,你循环的时候“飞龙2099-*”在循环第一次的时候,会先复制其中一个,剩下的全都改了后辍名,所以往下循环的时候找不到也就不能复制了,其它文件同理,然后在整个批处理结束后,把其它已经改的后辍名的文件改回来就完事了




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