批处理如何在指定文件夹内搜索某个关键字,包含这个关键字的文件或文件夹要删除?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理如何在指定文件夹内搜索某个关键字,包含这个关键字的文件或文件夹要删除?相关的知识,希望对你有一定的参考价值。
文件夹包含多层文件夹,搜索一个关键词,把包含这个关键词的文件或文件夹删除掉
不清楚你的实际文件/情况,仅以问题中的样说明及猜测为据;以下代码复制粘贴到记事本,另存为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 '[\\r\\n]+';
$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;
参考技术A
您可以使用批处理的 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 命令删除文件
打开文本编辑器,例如记事本,并输入以下内容:
@echo off
rem 设置搜索路径和关键字
set searchPath=c:\\test
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,并将文件拖拽到命令行窗口中,按回车键运行批处理文件
你好 请问如果匹配的字段在一个文本的列表里该怎么弄
追答不好意思 我不太明白你的问题,你的意思是在子文件夹里吗?
追问就是需要匹配的关键词很多 需要放在文本里面 上面的批处理该怎么修改
本回答被提问者采纳合理使用搜索引擎
①不想要的内容,方法:
关键词 -关键词
②精确搜索,方法:
"关键词"
③指定网站内搜素,方法:
site:域名 关键词
④搜索文件(PDF) 方法:
filetype:文件格式 关键词
⑤指定标题搜索,方法:
intitle:关键词
⑥指定范围搜索
intext:关键词(网页的正文中包含这个词)
allintext:关键词1 关键词2 关键词3(网页的正文中包含这3个关键词)
inurl:关键词(在网页的网址中包含这个关键词)
⑦叠加使用
site:网址 关键词1 -关键词2(在这个网站中有1没有2)
site:douban.com 亲密关系 -通往灵魂的桥梁
site:网址 关键词 intitle:关键词(内容的正文包含这个词)
site:douban.com 亲密关系 intext:罗兰米勒
以上是关于批处理如何在指定文件夹内搜索某个关键字,包含这个关键字的文件或文件夹要删除?的主要内容,如果未能解决你的问题,请参考以下文章
linux grep 如何搜索出包含某个字符串的所有文件 find
shell脚本--在带本月日期的文件中搜索包含某个关键字,并返回含有关键字的文件