怎么批处理替换当前文件夹中所有txt两个指定字符串之间的数据? 5

例如AA、、、BBnnAA+++BB改成AAXBBnnAAXBB。... 例如AA、、、BBnnAA+++BB改成AAXBBnnAAXBB。 展开
 我来答
qop_dob
2020-02-28 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:3933万
展开全部
不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行
<# :
cls
@echo off
rem 替换txt文本文件里两个指定字符串之间的内容
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
set "rootpath=%~dp0"
if "%rootpath:~-1%" equ "\" (set "rootpath=%rootpath:~,-1%")
cd /d "%rootpath%"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%rootpath%'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>

$leftstr='AA';
$rightstr='BB';
$newstr='X';

$path=$args[0];
$newfolder=$path+'\#result';
if(-not (test-path -liter $newfolder)){[void](md $newfolder)};
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
$enc=[Text.Encoding]::Default;
$regstr='('+[regex]::Escape($leftstr)+').+?('+[regex]::Escape($rightstr)+')';
for($i=0;$i -lt $files.length;$i++){
    write-host $files[$i].Name;
    $text=[IO.File]::ReadAllText($files[$i].FullName, $enc);
    $text=[regex]::replace($text,$regstr,{param($a);$a.groups[1].value+$newstr+$a.groups[2].value;});
    $newfile=$newfolder+'\'+$files[$i].Name;
    [IO.File]::WriteAllText($newfile, $text, $enc);
    break;
};
帐号已注销
2020-02-28 · TA获得超过123个赞
知道答主
回答量:1441
采纳率:10%
帮助的人:114万
展开全部
写代码可以处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式