标题: [文件操作] [已解决]求批处理根据JPG目录下的文件名,删除对应的ARW目录的文件 [打印本页]
作者: thp2008 时间: 2023-6-7 19:44 标题: [已解决]求批处理根据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.
但是我不会写,请高手帮一下忙。或者,高手有更好的方法实现更好。
作者: qixiaobin0715 时间: 2023-6-7 20:42
本帖最后由 qixiaobin0715 于 2023-6-7 21:02 编辑
可以一次性处理所有日期目录,将下面批处理代码文件放在多个日期文件夹同一目录内,也就是例子中 F:\ 下。- @echo off
- for /f "delims=" %%i in ('dir /b /ad^|findstr /be [0-9][0-9]*') do (
- setlocal enabledelayedexpansion
- for /f "delims=" %%j in ('dir /b /a-d "%%i\JPG\*.JPG"') do set _"%%~nj"=true
- for /f "delims=" %%k in ('dir /b /a-d "%%i\ARW\*.ARW"') do (
- if not defined _"%%~nk" del "%%i\ARW\%%k"
- )
- endlocal
- )
复制代码
请备份好源文件,以免发生意外。
或者:- @echo off
- for /f "delims=" %%i in ('dir /b /ad^|findstr /be [0-9][0-9]*') do (
- for /f "delims=" %%j in ('dir /b /a-d "%%i\ARW\*.ARW"') do (
- if not exist "%%i\JPG\%%~nj.JPG" del "%%i\ARW\%%j"
- )
- )
复制代码
作者: thp2008 时间: 2023-6-7 22:23
回复 2# qixiaobin0715
我单独复制了几份出来,测试了一下,两种方式,都测试可行,非常感谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |