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

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

[复制链接]
发表于 2019-6-18 15:58:45 | 显示全部楼层 |阅读模式
在分区下许有多文件夹,每个文件夹里有若干个.pds后缀的文件,我想把每个不相同的文件提取一个到自定义文件夹   例,D\a文件夹,
因为文件命名比较乱,不知道怎么排除相同的文件

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

例图二,也提取其中一个文件
发表于 2019-6-18 16:11:28 | 显示全部楼层
规则是什么啊,比如有同名文件怎么处理?是继续通过大小判断,还是直接改名?
 楼主| 发表于 2019-6-18 16:13:17 | 显示全部楼层
回复 2# miqilaosu


    根据文件名,要是有规律的文件名,例26,27,28,29,只提取其中的一个
发表于 2019-6-18 16:31:56 | 显示全部楼层
你的所有文件都有-吗?
 楼主| 发表于 2019-6-18 16:37:09 | 显示全部楼层
回复 4# miqilaosu


    不是的
发表于 2019-6-18 16:49:45 | 显示全部楼层
本帖最后由 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位后边用通配符加后缀名查找,和前边一样也是,只操做第一个,操作完其它相近的全都改后缀名,先多取几位,然后慢慢减少也许会好点,等所有循环结束,别忘了把后缀名改回来
 楼主| 发表于 2019-6-18 17:44:07 | 显示全部楼层
回复 6# miqilaosu


    不是要删除,是把不相同的文件提取到同一个文件夹
发表于 2019-6-18 22:02:08 | 显示全部楼层
回复 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
复制代码
发表于 2019-6-20 08:49:41 | 显示全部楼层
回复 7# wchong


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

本版积分规则

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

GMT+8, 2026-3-21 04:30 , Processed in 0.030737 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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