标题: [文件操作] 多文件提取的批处理 [打印本页]
作者: 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 编辑
没在规律不好删,- @echo off
- for /f "tokens=1,2 delims=-" %%i in ('dir /a-d /s /b *.pds') do (
- if not exist "d:\a\%%i%%j" (
- echo F|xcopy "%%i-%%j" "D:\b\"
- ren "%%~ni*.pds" "%%~ni*.wpds"
- )
-
- )
复制代码
所有代码结束后运行下面代码把后辍名改回来复制代码
要是都有杠的可以这样操作,或者你用读取文件名的方法,取前几个字符的方法来做判断 其它的都改后缀名,全部操作完,在把后缀名改回去,后缀名是什么自己想,最好差异大点,不然容易误操作- set var=%%i
- var=%var:~0,6%
复制代码
没有杠的就取前几位的方法,比如把你的文件名取前6位后边用通配符加后缀名查找,和前边一样也是,只操做第一个,操作完其它相近的全都改后缀名,先多取几位,然后慢慢减少也许会好点,等所有循环结束,别忘了把后缀名改回来
作者: wchong 时间: 2019-6-18 17:44
回复 6# miqilaosu
不是要删除,是把不相同的文件提取到同一个文件夹
作者: Batcher 时间: 2019-6-18 22:02
回复 1# wchong
测试代码之前请先做好备份- @echo off
- setlocal enabledelayedexpansion
- REM 设置待处理的文件夹
- set "SrcFolder=D:\Test"
- REM 设置提取到哪个文件夹
- set "DstFolder=D:\A"
- if not exist "%DstFolder%" (
- md "%DstFolder%"
- )
- pushd "%SrcFolder%"
- for /f "delims=" %%i in ('dir /b /s /a-d *.pds') do (
- echo 正在检查文件 %%i
- for /f "tokens=1 delims=-" %%j in ("%%~nxi") do (
- if not defined _%%j (
- echo --- 复制文件 %%i
- copy /y "%%i" "%DstFolder%"
- set _%%j=1
- )
- )
- )
- endlocal
复制代码
作者: miqilaosu 时间: 2019-6-20 08:49
回复 7# wchong
不是删除REN 是改名,你循环的时候“飞龙2099-*”在循环第一次的时候,会先复制其中一个,剩下的全都改了后辍名,所以往下循环的时候找不到也就不能复制了,其它文件同理,然后在整个批处理结束后,把其它已经改的后辍名的文件改回来就完事了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |