求批处理删除txt文本内最后两行。需要删除的只是在<h2></h2>标签中的最后两行。

批处理删除txt文本内最后两行。因为有的txt文本最后两行内容是在<h2></h2>标签内的,有的最后两行是<p></p>标签内的,需要删除的只是在<h2></h2>标签中的最后两行。

不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行<# :
cls&echo off&cd /d "%~dp0"&set "current=%cd%"
rem 将一个txt文本文件里末尾包含有指定字符串的最后两行内容删除
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$current=$env:current;
$newfolder=$current+"\result";
if(-not (test-path -literal $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder);}
$files=@(dir -literal $current|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
    $enc=[Text.Encoding]::GetEncoding('GB2312');
    $text=[IO.File]::ReadAllText($files[0].FullName, $enc).trim();
    $m=[regex]::match($text, '.+\n.+$');
    if($m.Success){
        if($m.groups[0].value -match '</h2>'){
            $text=$text.replace($m.groups[0].value, '');
        }
    }
    $newfile=$newfolder+'\'+$files[0].Name;
    [IO.File]::WriteAllText($newfile, $text, $enc);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-06-18
有工具,
就是转文件到txt的,可以用正责表达式编辑,
如果多,可以打包发我,我给你弄,给点好处没问题吧
相似回答
大家正在搜