首页 > 软件 > batch批处理中,如何搜索文件内容并按照关键词切割文件?

batch批处理中,如何搜索文件内容并按照关键词切割文件?

软件 2025-12-01

批处理如何在指定文件夹内搜索某个关键字,包含这个关键字的文件或文件夹要删除?

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

<#:
cls&echooff&cd/d"%~dp0"&modeconlines=5000
rem查找并删除当前目录下所有名称中包含有指定关键字/指定字符的文件和文件夹
set#=Anyquestions&set_=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%_%%z%
set"self=%~f0"
powershell-NoProfile-ExecutionPolicybypass"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-ErrorActionSilentlyContinue;
}else{
remove-item-literal$files[$i].FullName-recurse-force-ErrorActionSilentlyContinue;
}
}
}
}

如何用批处理依据关键词进行划分文件夹?

没看懂的,你相同的序号怎么来的?
不清楚你的实际文件,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行

/*&cls
@echooff
rem根据txt文件名称末尾指定特征的关键词添加对应的数字序号前缀并删除该指定特征的关键词
modeconlines=3000
set#=Anyquestion&set@=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%@%%z%
cd/d"%~dp0"
:end
for/f"tokens=1,2*delims=|"%%ain('dir/a-d/b"*####*#*.txt"^|cscript-nologo-e:jscript"%~f0"')do(
echo;"%%a"--^>"[#%%b#]%%c"
ren"%%a""[#%%b#]%%c"
remifnotexist"%%b\"md"%%b\"
remmove"[#%%b#]%%c""%%b\"
)
echo;%#%+%$%%$%/%@%%z%
pause
exit
*/
vararr={
"健康":1,
"娱乐":2,
"时尚":3,
"游戏":4,
"3C":5,
"亲子":6,
"文化":7,
"历史":8,
"动漫":9,
"星座":10,
"健身":11,
"家居":12,
"情感":13,
"科技":14,
"宠物":15
};
varfso=newActiveXObject('Scripting.FileSystemObject');
while(!WSH.StdIn.AtEndOfStream){
varline=WSH.StdIn.ReadLine();
varf=fso.GetFile(line);
varfname=f.Name;
varm=fname.match(/####(.+?)#/);
if(m){
if(arr[m[1]]!=undefined){
WSH.echo(line+'|'+arr[m[1]]+'|'+fname.replace(/####.+?#/,''));
}
}
}

bat批处理查找识别文件名中特定字符,并移动对应的文件夹。

@echooff
rem根据从文件名中指定字符串/关键词开始截取指定位数的字符来移动文件到对应文件夹
set#=q&set/azx=0x53b7e0b4
titleAnyquestion+%#%%#%%zx%
cd/d"%~dp0"
set"keyword=20191231"
set"n=15"
powershell-NoProfile-ExecutionPolicybypass^
$files=@(dir^|?{($_-is[System.IO.FileInfo])-and($_.Name-ne'%~nx0')});^
for($i=0;$i-lt$files.length;$i++){^
$n=$files[$i].BaseName.IndexOf('%keyword%');^
if($n-ge0){^
$s=$files[$i].BaseName.Substring($n);^
if($s.length-ge%n%){^
$kw=$s.Substring(0,%n%);^
[void](md$kw-force);^
$txt=$files[$i].Directory.FullName+'\'+$kw+'\%n%.txt';^
out-file-file$txt-input$kw-encDefault;^
write-host($files[$i].Name+'--^>'+$kw);^
mv-liter$files[$i].FullName($files[$i].Directory.FullName+'\'+$kw);^
};^
};^
}
echo;Anyquestion+%#%%#%%zx%
pause

要个批处理 搜索文件夹内所有TXT内容,找出其中内容含"XXXX"的那个文本!

第一个这是 @echo off :start set "now=%cd%" set /p batch=拖入要处理的文件夹: pushd "%batch%" || goto start if not defined batch goto start for /f "tokens=* delims=" %%i in ('dir /s /b /a-d *.txt') do (find "天使的翅膀" "%%i">nul && echo %%j>>file_temp) move "%batch%\file_temp" "%now%\Result.txt" >nul echo 全部完成^! start

bat批处理提取txt关键词所在行并输出文件

find和findstr是外部命令,频繁使用外部命令效率太低。 @echo offsetlocal enabledelayedexpansionset n=0for /f "delims=" %%i in (b.txt) do ( set /a n+=1 set b!n!=%%i)(for /f "delims=" %%i in (a.txt) do ( set e=0 for /l %%j in (1 1 %n%) do if "%%i"=="!b%%j!" set e=1 if !e!==1 (echo %%i) else (set a=%%i&echo !a:~,8!XXX!a:~11!

标签:电脑网络 信息技术 编程 计算机 编程语言

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18