不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行
<# :
echo off&cls
rem 根据给出的多个指定字符串/关键字,删除多个txt文本文件内不包含这些指定字符串/关键字中任意一个的行
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$wordlist=@"
单词1
单词2
单词3
单词4
单词5
"@;
$newfolder="#result";
$arr=$wordlist.trim() -split '[\r\n]+';
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
if(-not (test-path -liter $newfolder)){[void](md $newfolder);};
$newfolder=get-item -liter $newfolder;
$enc=[Text.Encoding]::GetEncoding('GB2312');
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
write-host $files[0].Name;
$newfile=$newfolder.FullName+'\'+$files[0].Name;
$fs=New-Object System.IO.FileStream($newfile, [System.IO.FileMode]::Create);
$sw=New-Object System.IO.StreamWriter($fs, $enc);
$text=[IO.File]::ReadAllLines($files[0].FullName,$enc);
for($i=0;$i -lt $text.count;$i++){
$f=$false;
for($j=0;$j -lt $arr.length;$j++){
if($text[$i].Contains($arr[$j])){
$f=$true;break;
}
}
if($f){
$sw.WriteLine($text[$i]);
$sw.Flush();
}
}
$sw.Close();
$fs.Close();
}
<# :
echo off&cls
rem 根据给出的多个指定字符串/关键字,删除多个txt文本文件内不包含这些指定字符串/关键字中任意一个的行
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$wordlist=@"
单词1
单词2
单词3
单词4
单词5
"@;
$newfolder="#result";
$arr=$wordlist.trim() -split '[\r\n]+';
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
if(-not (test-path -liter $newfolder)){[void](md $newfolder);};
$newfolder=get-item -liter $newfolder;
$enc=[Text.Encoding]::GetEncoding('GB2312');
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
write-host $files[0].Name;
$newfile=$newfolder.FullName+'\'+$files[0].Name;
$fs=New-Object System.IO.FileStream($newfile, [System.IO.FileMode]::Create);
$sw=New-Object System.IO.StreamWriter($fs, $enc);
$text=[IO.File]::ReadAllLines($files[0].FullName,$enc);
for($i=0;$i -lt $text.count;$i++){
$f=$false;
for($j=0;$j -lt $arr.length;$j++){
if($text[$i].Contains($arr[$j])){
$f=$true;break;
}
}
if($f){
$sw.WriteLine($text[$i]);
$sw.Flush();
}
}
$sw.Close();
$fs.Close();
}