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

[文件操作] [已解决]批处理怎样把两个文件夹删掉不重名的文件?

[复制链接]
发表于 2022-2-7 01:18:12 | 显示全部楼层 |阅读模式
本帖最后由 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
  1. ..\A\
  2. a.json
  3. b.json
  4. c.json
复制代码
  1. ..\B\
  2. a.png
  3. c.png
复制代码
然后我要把A里面的B文件夹有的文件(后缀名不同)拷贝到C,这样子就等效这样:
A里面的B文件夹没有的文件(后缀名不同)
这样就把b.json删掉了

别问我为啥不自己把b.json删掉,原因在于这样的json文件有1000+个,png文件却只有800个左右
json文件统一格式 xxxx_xxxx_xxxx.json

本来想好了这样子写
  1. @echo off
  2. set keeplist=
  3. 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
  4. @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.如有大佬有更好思路,也请讲解讲解!
发表于 2022-2-7 09:07:06 | 显示全部楼层
A、B文件夹在同一目录下的话:
  1. @echo off&setlocal enabledelayedexpansion
  2. md C
  3. for %%i in (B\*.png) do if exist "A\%%~ni.json" copy "A\%%~ni.json" "C"
复制代码
代码未测试。
发表于 2022-2-7 09:18:42 | 显示全部楼层
回复 1# kdXiaoyi
这样描述比较清楚:
比较A中的.json与B中的.png文件,若文件名相同则将A中的.json文件拷贝到C中。
发表于 2022-2-7 09:47:30 | 显示全部楼层
  1. @echo off
  2. cd /d %~dp0
  3. if not exist C md C
  4. for /f "delims=" %%a in ('dir /b b\*.png') do set %%~na=1
  5. for /f "delims=" %%a in ('dir /b/s a\*.json') do (
  6. if defined %%~na (echo;move "%%~fa" C\%%~nxa) else (echo;del %%~fa)
  7. )
  8. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
kdXiaoyi + 1 感谢!具体理由见一楼

查看全部评分

 楼主| 发表于 2022-2-7 15:54:37 | 显示全部楼层
回复 2# qixiaobin0715


    好像有点BUG
少量测试了一下,B有230个PNG,C中只有36个…………
 楼主| 发表于 2022-2-7 15:58:55 | 显示全部楼层
本帖最后由 kdXiaoyi 于 2022-2-7 16:06 编辑

回复 4# for_flr


    也有BUG……显示了JSON但没有真正删除
谢谢大佬,我研究研究,改进一下……
emmmm
发表于 2022-2-7 15:58:59 | 显示全部楼层
你把测试文件打包发到网盘上,我看看是哪里的问题。
发表于 2022-2-7 16:11:22 | 显示全部楼层
4楼代码若显示无误,将第6行中的2个echo;去掉,再运行即可。
 楼主| 发表于 2022-2-7 16:15:40 | 显示全部楼层
回复 7# qixiaobin0715


    找到了,是echo;的问题,修正以后的代码


wss1.cn/f/7juq06uqk26 复制链接到浏览器打开

跑完之后发现一个问题:JSON只有40几个了……
发表于 2022-2-7 16:26:23 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-2-7 16:28 编辑

是你表述不清楚,我记得开始是说文件名相同,扩展名不同。
你说的.json格式与实际还是有出入的。
发表于 2022-2-7 16:32:04 | 显示全部楼层
本帖最后由 Fit 于 2022-2-7 16:38 编辑

问一下a文件夹里有b文件夹,c文件夹在哪里?是在a文件夹里,还是在b文件夹里
发表于 2022-2-7 17:08:13 | 显示全部楼层
回复 9# kdXiaoyi
看了你的测试文件,还是搞不清楚你到底是指哪些为不重名文件。
发表于 2022-2-7 17:15:57 | 显示全部楼层
会不会出现,*.png文件中文件名在*.json文件中没有的情况!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 12:45 , Processed in 0.010471 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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