我想删除文件夹中的一堆文件,这些文件具有特定的扩展名并且与指定的字符串不匹配

时间:2014-03-24 00:37:03

标签: cmd batch-processing

我是命令提示脚本和批处理文件的新手。我有一个包含以下内容的文件夹:

  • file1.pdf
  • file1.tif
  • file1_cropped.tif
  • FILE1.TXT
  • file2.pdf
  • file2.tif
  • file2_cropped.tif
  • FILE2.TXT ...
  • filen.pdf
  • filen.tif
  • filen_cropped.tif
  • filen.txt

我想删除所有没有" _cropped"的tif文件。在文件名中。我已经看到了一些删除具有指定扩展名或匹配特定字符串的文件的解决方案,但我试图将两者结合起来。

非常感谢,

马克。

2 个答案:

答案 0 :(得分:1)

for /f "delims=" %%a in ('dir /b /a-d *.tif^|find /v /i "_cropped"') do echo del "%%a"

应该适合。

也许你想要

pushd "target directoryname"
for /f "delim...
popd

指定要处理的当前目录以外的目录。

为了测试目的,所需的DEL命令仅为ECHO在您确认命令正确后,将ECHO DEL更改为DEL以实际删除文件。

答案 1 :(得分:0)

从命令行进入目标目录:

for /F "eol=: delims=" %a in ('dir /b *.tif ^| find /V "_cropped"') do @del "%a"

我们在哪里:

FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

在批处理文件中:

for /F "eol=: delims=" %%a in ('dir /b *.tif ^| find /V "_cropped"') do @del "%%a"

我们使用更具互动性的方法进行确认的示例:

通常用作:

the_bat_file.bat exclude_these tif

其中,第一个选项是要排除的文件名中的字符串,两个是文件扩展名。

@echo off

set pat=_cropped
set ext=tif

IF "%1"=="--help"  (
    echo Usage %0 [exclude] [extension]
    echo   Default exclude  : %pat%
    echo   Default extension: %ext%
    goto end
)

GOTO part1

:confirm
SET /P CONF=Continue y/N?
IF /I "%CONF%" NEQ "Y" GOTO end
goto %con%

:part1
setlocal

IF NOT "%1"=="" set pat=%1
IF NOT "%2"=="" set ext=%2

echo Pattern  : %pat% 
echo Extension: %ext%
echo.

set con=part2
goto confirm

:part2
echo.
echo Files to delete:
echo.
for /F "eol=: delims=" %%a in ('dir /b "*.%ext%" ^| find /V "%pat%"') do echo "%%a"
echo.
set con=part3
goto confirm

:part3
for /F "eol=: delims=" %%a in ('dir /b "*.%ext%" ^| find /V "%pat%"') do DEL "%%a"

:end
endlocal