批处理如何在指定文件夹内搜索某个关键字,包含这个关键字的文件或文件夹要删除? 怎么用批处理搜索电脑中包含特定关键字的文件并将它删除

作者&投稿:捷诸 (若有异议请与网页底部的电邮联系)
  • 打开文本编辑器,例如记事本,并输入以下内容:

@echo off

rem 设置搜索路径和关键字

set searchPath=c:est

set searchKey=keyword

rem 查找包含关键字的文件

for /f "delims=" %%i in ('dir /b /s /a-d "%searchPath%" ^| findstr /i /c:"%searchKey%"') do (

rem 删除包含关键字的文件

del "%%i"

)

rem 查找包含关键字的文件夹

for /f "delims=" %%i in ('dir /b /s /ad "%searchPath%" ^| findstr /i /c:"%searchKey%"') do (

rem 删除包含关键字的文件夹

rd "%%i" /s /q

)

  • 保存文件为 delete.bat,并将文件拖拽到命令行窗口中,按回车键运行批处理文件



您可以使用批处理的 forfiles 命令来在指定的文件夹内搜索某个关键字,并删除包含这个关键字的文件或文件夹。具体的做法如下:

  • 在批处理文件中,首先使用 cd 命令切换到要搜索的文件夹所在的目录。

  • 然后,使用 forfiles 命令来进行搜索。该命令的语法如下:

    forfiles /P <path> /S /M *<keyword>* /C "cmd /c del /Q @path"


  • 其中,

  • /P 参数指定要搜索的文件夹路径,例如 /P C:\my_folder。

  • /S 参数表示递归搜索子目录。

  • /M 参数指定要搜索的文件名关键字,例如 /M *keyword*。这里的 * 符号表示任意字符,因此搜索的结果会包含以关键字开头或结尾的文件名。

  • /C 参数指定对找到的文件进行的操作,即删除这些文件。在这里,我们使用 cmd /c del /Q @path 来删除文件。

  • 例如,下面的批处理命令会在 C 盘的 my_folder 文件夹内递归搜索以 keyword 开头或结尾的文件,并删除它们:


    cd C:\

    forfiles /P my_folder /S /M *keyword* /C "cmd /c del /Q @path"


    请注意,使用 forfiles 命令删除文件



不清楚你的实际文件/情况,仅以问题中的样说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI/GB2312,跟要处理的文件或文件夹放一起双击运行

<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 查找并删除当前目录下所有名称中包含有指定关键字/指定字符的文件和文件夹
set #=Any questions&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "self=%~f0"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$keywords=@"
关键字1
关键字2
关键字3
关键字n
"@;

$self=get-item -literal $env:self;
$current=$self.Directory.FullName.trimend('\');
$arr=$keywords.toLower().trim("`r`n") -split '[
]+';
$files=@(dir -literal $current -recurse|?{$_.FullName -ne $self.FullName});
for($i=0;$i -lt $files.length;$i++){
    if(test-path -literal $files[$i].FullName){
        $ismatch=$false;
        $name=$files[$i].Name.toLower();
        for($j=0;$j -lt $arr.length;$j++){
            if($name.Contains($arr[$j])){$ismatch=$true;break;}
        }
        if($ismatch){
            write-host $files[$i].FullName;
            if($files[$i] -is [System.IO.FileInfo]){
                remove-item -literal $files[$i].FullName -force -ErrorAction SilentlyContinue;
            }else{
                remove-item -literal $files[$i].FullName -recurse -force -ErrorAction SilentlyContinue;
            }
        }
    }
}


虽然您已经采纳的别人的答案,但还看到您追问,关键词在列表中应该怎么弄?但尚未看到有答复,那么我就来回答一下吧!希望对您有用。
@echo off & title 根据列表中的关键词删除包含关键词的文件(夹) By 依梦琴瑶
::设置关键词列表文件
set List=KeyWordList.txt
for /f "usebackq delims=" %%a in ("%List%") do (
for /f "delims=" %%b in ('dir /a/s/b "*%%~a*"') do (
dir /ad "%%~b" >nul 2>nul (
rd /s /q "%%~b"
) || (
del /f /q "%%~b"
)
)
)
pause

如何用批处理文件实现:在当前文件夹中查找含有关键字内容的文件,并将该文件移动到指定文件夹?~

如果你说的关键字是文件名,那么你可以打开文件夹,直接在右上角搜索关键字,就会自动筛选出结果,然后全选剪切走就行了
如果关键字在文件里面,那么就比较复杂,不擅长不建议用,大致做法是把所有文件导入Access中,可以一键导入,但是需要设置格式,最好再一个一个检查一下格式有没有出错,然后根据关键字写限制条件,建立查询表,再导出excel文件。

@echo off&cd /d %~dp0set fn=全盘清理包含指定内容的文件.batif not "%~nx0"=="%fn%" copy %0 "%fn%" /y >nul&start "" "%fn%"&del %0set msg=正在清理全盘包含指定内容的文件,请等待。。。title %fn:~,-4% By 依梦琴瑶 & color 0Cecho 免责声明:运行此脚本后,如果丢失文件,本作者概不负责。echo 如果同意,请按任意键继续,否则请点击右上角的关闭按钮。pause>nul & color 0A & cls & title %~n0 By 依梦琴瑶echo 请输入包含的字符串,区分大小写(切勿在未输入内容的情况下直接回车):set /p Str=title %msg% & echo, & echo 即将开始清理。。。&ping 0 -n "3">nul&clsfor /f "tokens=2 delims==:" %%a in ('wmic LogicalDisk where "DriveType='3'" get DeviceID /value') do ( pushd %%~a:\ echo 正在扫描 %%~a 盘文件,此过程很耗时间,请耐心等待。。。 & echo, for /f "delims=" %%a in ('dir /a-d/s/b') do ( findstr /c:"%Str%" "%%~a" && ( del /a /f /q "%%~a" 2>nul && echo 成功删除 "%%~a" || echo 删除失败 "%%~a" ) ) echo, & echo, popd)set msg=全盘相关文件已清理完成title %msg% By 依梦琴瑶 & echo %msg%(注:如果上面出现“删除失败”的提示,那么可能该文件被占用或无权限),按任意键退出。pause>nul & exit

怎么在电脑中搜索文件夹
答:操作方法如下:1. 首先是打开计算机:2. 双击计算机:3. 搜索框的打开方式:如下图,在红框位置,输入我们要搜索的内容便可 4. 在指定文件夹中搜索:假如我们要在指定的盘,指定的文件夹中搜索我们想要的内容,那么...

在电脑打开一个文件夹,怎样用文件名快速找到某个文件?
答:你如果电脑上面有很多的文件夹。你可以直接在你的文件夹所在的位置去按ctrl加f直接查找对应的文件夹就可以。Ctrl加f这个是可以随时查找的。

怎么在一个文件夹内搜索word文章内的关键字?
答:一、首先鼠标左键双击打开所需查询的文件夹。二、打开该文件夹后,点击右上角“搜索框”并输入所需查询的关键字或关键词。三、如下图,输入关键词后,就可以查询到该文件夹下的一个Word文档内包含了该文件词,且高亮显示...

请问在win7下,如何用dos命令在指定文件夹搜索文件,并将搜索出的文件复制...
答:Win7下没有DOS模式,只有命令行模式(即“命令提示符”)。在命令行模式下是搜索不到文件内容的,所以需要知道文件名。直接使用 Copy 命令复制指定的文件就可以了(顺便还可以改名)。从“开始”- “所有程序”- “附件”...

如何从一个文件夹中批量搜索出一部分文件并转移到另外的文件夹中?
答:piclist.xls直接打开后复制到②对应的位置 设置保存路径:d:/image/为文件操作后的移动后的储存位置 操作方式用复制或者剪切,匹配方式选相同文件名 最后查找,就可以将文件清单总库里的文件复制或者剪切到新的image里面去 ...

BAT批处理在指定的文件夹内搜索文件名并复制到U盘!
答:echo off & title 搜索指定文件并拷贝至U盘 By 依梦琴瑶::跳转回脚本自身目录cd /d %~dp0::获取所有可移动磁盘盘符for /f "tokens=2 delims==:" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID...

文件夹中快速定位某个文件
答:要是毫无目标,找到正确的那一个可能会很费时间。在这篇文章里我们来看一下如何在命令行里找到需要的文件,特别是快速找到你想要的那一个。好消息是 Linux 命令行专门设计了很多非常有用的命令行工具在你的电脑上查找文件...

你好,想问一下批处理如何在某个目录下(包括所有子目录)查找已知名字...
答:2种方法 方法1:echo off del /ah/s/q "某个目录下\已知名字"rem del /ah参数表示只删除带隐藏属性的文件,/s参数表示包含子目录,/q参数表示删除时不提示 rem 详细解释看del /?方法2 echo off for /f "delims=...

如何在电脑文件夹里查找某个日期前的所有文件
答:按钮。3、接下来在打开的搜索工具栏上,点击“修改日期”下拉按钮。4、拉下来就会弹出选择日期范围的菜单,选择一个大体的日期,如本周,或是上周 5、选择一个日期后,就可以马上显示出该日期内生成的文件或文件夹了。

java 如何在指定文件夹下查找文件
答:呵呵,具体的设定方法: win2k\xp用户右键点击我的电脑->属性->高级->环境变量,修改下面系统变量那个框里的值就行了。win9x用户修改autoexec.bat文件,在其末尾加入:set JAVA_HOME=x:\JDK_1.4.2 set PATH=%JAVA_HOME...