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

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

本帖最后由 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.如有大佬有更好思路,也请讲解讲解!

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\"
复制代码
代码未测试。

TOP

回复 1# kdXiaoyi
这样描述比较清楚:
比较A中的.json与B中的.png文件,若文件名相同则将A中的.json文件拷贝到C中。

TOP

  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

评分人数

    • kdXiaoyi: 感谢!具体理由见一楼技术 + 1

TOP

回复 2# qixiaobin0715


    好像有点BUG
少量测试了一下,B有230个PNG,C中只有36个…………

TOP

本帖最后由 kdXiaoyi 于 2022-2-7 16:06 编辑

回复 4# for_flr


    也有BUG……显示了JSON但没有真正删除
谢谢大佬,我研究研究,改进一下……
emmmm

TOP

你把测试文件打包发到网盘上,我看看是哪里的问题。

TOP

4楼代码若显示无误,将第6行中的2个echo;去掉,再运行即可。

TOP

回复 7# qixiaobin0715


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


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

跑完之后发现一个问题:JSON只有40几个了……

TOP

本帖最后由 qixiaobin0715 于 2022-2-7 16:28 编辑

是你表述不清楚,我记得开始是说文件名相同,扩展名不同。
你说的.json格式与实际还是有出入的。

TOP

本帖最后由 Fit 于 2022-2-7 16:38 编辑

问一下a文件夹里有b文件夹,c文件夹在哪里?是在a文件夹里,还是在b文件夹里
Fit Strong

TOP

回复 9# kdXiaoyi
看了你的测试文件,还是搞不清楚你到底是指哪些为不重名文件。

TOP

会不会出现,*.png文件中文件名在*.json文件中没有的情况!!
Fit Strong

TOP

返回列表