标题: [文件操作] [已解决]批处理怎样把两个文件夹删掉不重名的文件? [打印本页]
作者: kdXiaoyi 时间: 2022-2-7 01:18 标题: [已解决]批处理怎样把两个文件夹删掉不重名的文件?
本帖最后由 kdXiaoyi 于 2022-2-12 09:31 编辑
2022年2月11日-已解决
我已靠4楼大神的代码解决此问题。地址:www.bathome.net/redirect.php?goto=findpost&pid=251362&ptid=61529
秉承着“如果你写好的BUG符合你预期,就不要修改它”的原则(BUG指A,B那两个该死的文件夹),就这样解决吧
标题描述的不太详细……
现在有两个文件夹A B- ..\A\
- a.json
- b.json
- c.json
复制代码
复制代码
然后我要把A里面的B文件夹有的文件(后缀名不同)拷贝到C,这样子就等效这样:
A里面的B文件夹没有的文件(后缀名不同)
这样就把b.json删掉了
别问我为啥不自己把b.json删掉,原因在于这样的json文件有1000+个,png文件却只有800个左右
json文件统一格式 xxxx_xxxx_xxxx.json
本来想好了这样子写- @echo off
- set keeplist=
- for /f "delims=. tokens=1" %%a in (A\) do for /f "delims=. tokens=1" %%b in (B\) do if "%%a"=="%%b" set KeepList=%keeplist%,%%b.json
- @REM for /f %%i in (a\) do for /f "delims=," %%o in ("%keeplist%") do if "%%i"=="%%o" copy "A\%%o" "C\"
复制代码
本来我也想着接下来核对名单,之后合名单的转移到C文件夹
BUT,上面代码有个@REM注释掉的for /f语句,就是这里出了问题
我不知道如何才可以把A\中的文件列出来核对……
请大佬指点!!!万分感谢!!!
P.S.如有大佬有更好思路,也请讲解讲解!
作者: qixiaobin0715 时间: 2022-2-7 09:07
A、B文件夹在同一目录下的话:- @echo off&setlocal enabledelayedexpansion
- md C
- for %%i in (B\*.png) do if exist "A\%%~ni.json" copy "A\%%~ni.json" "C\"
复制代码
代码未测试。
作者: qixiaobin0715 时间: 2022-2-7 09:18
回复 1# kdXiaoyi
这样描述比较清楚:
比较A中的.json与B中的.png文件,若文件名相同则将A中的.json文件拷贝到C中。
作者: for_flr 时间: 2022-2-7 09:47
- @echo off
- cd /d %~dp0
- if not exist C md C
- for /f "delims=" %%a in ('dir /b b\*.png') do set %%~na=1
- for /f "delims=" %%a in ('dir /b/s a\*.json') do (
- if defined %%~na (echo;move "%%~fa" C\%%~nxa) else (echo;del %%~fa)
- )
- pause
复制代码
作者: kdXiaoyi 时间: 2022-2-7 15:54
回复 2# qixiaobin0715
好像有点BUG
少量测试了一下,B有230个PNG,C中只有36个…………
作者: kdXiaoyi 时间: 2022-2-7 15:58
本帖最后由 kdXiaoyi 于 2022-2-7 16:06 编辑
回复 4# for_flr
也有BUG……显示了JSON但没有真正删除
谢谢大佬,我研究研究,改进一下……
emmmm
作者: qixiaobin0715 时间: 2022-2-7 15:58
你把测试文件打包发到网盘上,我看看是哪里的问题。
作者: qixiaobin0715 时间: 2022-2-7 16:11
4楼代码若显示无误,将第6行中的2个echo;去掉,再运行即可。
作者: kdXiaoyi 时间: 2022-2-7 16:15
回复 7# qixiaobin0715
找到了,是echo;的问题,修正以后的代码
wss1.cn/f/7juq06uqk26 复制链接到浏览器打开
跑完之后发现一个问题:JSON只有40几个了……
作者: qixiaobin0715 时间: 2022-2-7 16:26
本帖最后由 qixiaobin0715 于 2022-2-7 16:28 编辑
是你表述不清楚,我记得开始是说文件名相同,扩展名不同。
你说的.json格式与实际还是有出入的。
作者: Fit 时间: 2022-2-7 16:32
本帖最后由 Fit 于 2022-2-7 16:38 编辑
问一下a文件夹里有b文件夹,c文件夹在哪里?是在a文件夹里,还是在b文件夹里
作者: qixiaobin0715 时间: 2022-2-7 17:08
回复 9# kdXiaoyi
看了你的测试文件,还是搞不清楚你到底是指哪些为不重名文件。
作者: Fit 时间: 2022-2-7 17:15
会不会出现,*.png文件中文件名在*.json文件中没有的情况!!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |