在 .bat 中搜索文件

在 .bat 中搜索文件

我想删除文件夹中所有文件名不包含单词“Times”或“Wall”的 pdf 文件。因此,文件 1.pdf 2.pdf All_Times_to_ride.pdf Wall.pdf 都在其中,而结果应该是 All_Times_to_ride.pdf Wall.pdf。

我在搜索脚本方面遇到问题:

@echo off

SETLOCAL EnableDelayedExpansion
SET "pathToFolder=.\MAGAZINES\"
SET "wordToSearch=*Times*"
FOR /F "tokens=*" %%F IN ('dir %pathToFolder% /b *.pdf') DO (
    findstr /IP %wordToSearch% "%pathToFolder%\%%F">nul
    IF !ERRORLEVEL!==1 (
        DEL /Q "%pathToFolder%\%%F"
    )
)

1. 我想在名为“Times”和“Wall”的文件中搜索两个单词

第二。现在,它会删除所有文件,即使文件夹中存在 All_Times_to_ride.pdf 文件。

请帮忙,不知道如何修复。

答案1

使用FOR/FFINDSTR

@echo off
pushd "%~dp0MAGAZINES"

FOR /F eol^=^ delims^= %%F in ('2^>nul dir /b "*.pdf"^|findstr /IV /C:"times wall"') do del /Q "%%F"

popd

eol^=^ delims^=通过转义每一个分隔符。 看如何禁用 /F 的 eol 和 delims 选项?

相关内容