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

[文件操作] 多文件提取的批处理

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

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

例图二,也提取其中一个文件

回复 7# wchong


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

TOP

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

TOP

回复 6# miqilaosu


    不是要删除,是把不相同的文件提取到同一个文件夹

TOP

本帖最后由 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位后边用通配符加后缀名查找,和前边一样也是,只操做第一个,操作完其它相近的全都改后缀名,先多取几位,然后慢慢减少也许会好点,等所有循环结束,别忘了把后缀名改回来

TOP

回复 4# miqilaosu


    不是的

TOP

你的所有文件都有-吗?

TOP

回复 2# miqilaosu


    根据文件名,要是有规律的文件名,例26,27,28,29,只提取其中的一个

TOP

规则是什么啊,比如有同名文件怎么处理?是继续通过大小判断,还是直接改名?

TOP

返回列表