批量文件删除图像

时间:2014-04-17 19:20:16

标签: batch-file

我正在尝试创建一个批处理文件,删除具有特定名称的图像。图像将具有诸如

之类的名称

房子200x300.jpg 轿厢125x250.jpg

所以理想情况下我需要一个正则表达式来定位以 - (Num1)x(Num2).jpg

结尾的文件

此外,图像位于各种文件夹和子文件夹中,因此我需要从父文件夹递归执行此操作。

由于

3 个答案:

答案 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以实际删除文件。