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

[文件操作] [已解决]求批处理根据JPG目录下的文件名,删除对应的ARW目录的文件

我有很多日期目录,每个日期目录下有两个文件夹JPG和ARW文件夹,
下面对应放着对应的的
F:\20230509\JPG\*.JPG
F:\20230509\ARW\*.ARW
*.jpg和*.ARW的文件名是一样的,只是扩展名不同。一般我查看JPG文件,进行照片的筛选,将不好的删除掉,最后,留下OK的JPG文件。
我想写个批处理,自动根据我指定的目录,根据指定目录下的JPG目录下*.jpg文件,为依据,将ARW文件夹下的,不好的*.ARW文件全部删除掉。
也就是说:根据我删除后,留下的*.JPG,对应的ARW目录下,也自动删除掉多余的文件。ARW目录下,保留跟我删除后,留下的*.JPG一样的文件。

例如:两个源目录下的文件名如下:

F:\20230509\JPG\
DSC01005.JPG
DSC01006.JPG
DSC01007.JPG
DSC01008.JPG
DSC01009.JPG
DSC01010.JPG
DSC01011.JPG
DSC01012.JPG


F:\20230509\ARW
DSC01005.ARW
DSC01006.ARW
DSC01007.ARW
DSC01008.ARW
DSC01009.ARW
DSC01010.ARW
DSC01011.ARW
DSC01012.ARW

我经过筛选JPG目录下的文件,删除了几个文件,剩下:

F:\20230509\JPG\
DSC01005.JPG
DSC01007.JPG
DSC01008.JPG
DSC01010.JPG

这时,我想通过批处理,根据JPG目录下的*.jpg,也自动删除掉ARW下,对应的文件,只保留跟JPG目录下一样的文件。

F:\20230509\ARW\
DSC01005.ARW
DSC01007.ARW
DSC01008.ARW
DSC01010.ARW


@echo off
set /p Yuan=请输入源目录完整路径:F:\20230509

1、我想到两种思路,一是取JPG目录下的所有*.jpg文件名,仅文件名,赋予变量,如果ARW存在这个文件就跳过,如果不存在就删除。
dir %yuan%\JPG\*.jpg /b

2、第二种思路就是,取JPG目录下的所有*.jpg文件名,仅文件名,赋予变量,将对应的ARW目录下对应的*.ARW改一个临时的扩展名比如:.RRW
然后将所有*.ARW删除,再将*.RRW,批理改成*.ARW.

但是我不会写,请高手帮一下忙。或者,高手有更好的方法实现更好。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 qixiaobin0715 于 2023-6-7 21:02 编辑

可以一次性处理所有日期目录,将下面批处理代码文件放在多个日期文件夹同一目录内,也就是例子中 F:\ 下。
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad^|findstr /be [0-9][0-9]*') do (
  3.     setlocal enabledelayedexpansion
  4.     for /f "delims=" %%j in ('dir /b /a-d "%%i\JPG\*.JPG"') do set _"%%~nj"=true
  5.     for /f "delims=" %%k in ('dir /b /a-d "%%i\ARW\*.ARW"') do (
  6.         if not defined _"%%~nk" del "%%i\ARW\%%k"
  7.     )
  8.     endlocal
  9. )
复制代码
请备份好源文件,以免发生意外。
或者:
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad^|findstr /be [0-9][0-9]*') do (
  3.     for /f "delims=" %%j in ('dir /b /a-d "%%i\ARW\*.ARW"') do (
  4.         if not exist "%%i\JPG\%%~nj.JPG" del "%%i\ARW\%%j"
  5.     )
  6. )
复制代码
1

评分人数

TOP

回复 2# qixiaobin0715

我单独复制了几份出来,测试了一下,两种方式,都测试可行,非常感谢!

TOP

返回列表