我正在尝试创建一个批处理文件,删除具有特定名称的图像。图像将具有诸如
之类的名称房子200x300.jpg 轿厢125x250.jpg
所以理想情况下我需要一个正则表达式来定位以 - (Num1)x(Num2).jpg
结尾的文件此外,图像位于各种文件夹和子文件夹中,因此我需要从父文件夹递归执行此操作。
由于
答案 0 :(得分:0)
你考虑过使用PowerShell吗? 由于语法有限,批处理文件中的正则表达式会非常快。 我的经验是有限的,所以可能有一个比这更好的解决方案:
@echo off
FOR /F "delims=?" %%i IN ('dir /B /S ^| findstr /R "[^\.]*[0-9][0-9][0-9]x[0-9][0-9][0-9].jpg"') DO (
del /s "%%i" >nul 2>&1
)
我正在重新定向输出,因为我认为 FOR
开始对del
的输出感到困惑。
答案 1 :(得分:0)
del /S *-???x???.jpg
也许您可能首先要通过del
命令更改dir /B
只是为了检查没有任何文件没有指定的文件名格式,但是这个文件将被选中卡。
答案 2 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "delims=" %%a IN (
'dir /s /b /a-d "%sourcedir%\*.jpg" ^|findstr /i /e /r /c:"-[0-9][0-9]*x[0-9][0-9]*\.jpg"'
) DO (
ECHO DEL "%%a"
)
GOTO :EOF
这应该可以完成这项工作 - 仅定位那些以-numXnum.jpg
您需要设置自己的sourcedir
为了测试目的,所需的DEL命令仅为ECHO
。 在您确认命令正确后,将ECHO DEL
更改为DEL
以实际删除文件。