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

例如AA、、、BBnnAA+++BB改成AAXBBnnAAXBB。

不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为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;
};

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-02-28
写代码可以处理

怎么批处理替换当前文件夹中所有txt两个指定字符串之间的数据?
编码选ANSI,跟要处理的文件放一起运行<# :cls@echo offrem 替换txt文本文件里两个指定字符串之间的内容set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4title %#% +%$%%$%\/%@% %z%set "rootpath=%~dp0"if "%rootpath:~-1%" equ "\\" (set "rootpath=%rootpath:~,...

...某个文件夹下所有TXT文件中两个特定字符串间的内容?
FolderPath=inputbox("输入处理的文件夹","输入处理的文件夹")'FolderPath="F:\\新建文件夹"set fso=createobject("scripting.filesystemobject")set folder=fso.getfolder(FolderPath)set files=folder.files for each fl in files if right(fl,4)=".txt" Then filename=fl Set objFSO = CreateObje...

批处理替换txt中2个指定字符(字符串)中间的文本
echo off & setlocal enabledelayedexpansionset "file=2.txt"DEL $>NUL 2>NUL(for \/f "delims=" %%a in (%file%) do (set\/a Row+=1set "Str=%%a"for \/f "tokens=1,3 delims=\/#" %%b in ('echo !Str!') do (echo %%b\/ #%%c)))>>$MOVE $ %file%>nul 2>nulpause & ...

批处理,替换(或者删除)当前文件夹中所有TXT文档中指定的字符?
>>"%%~ni_tmp.txt")del "%%i" \/f \/qren "%%~ni_tmp.txt" "%%i")pause注:把批处理文件跟txt放在一起运行,测试前先备份好原文件您的采纳是我们的动力和鼓励,请及时点击【采纳回答】

怎么用批处理,批量替换多个文文本里的中括号内指定字符后面的内容?
不清楚你的实际文件\/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行 <# :cls echo off rem 将txt文本文件内指定特征字符串中的部分内容替换为其他指定内容 set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0...

批处理删除两个指定字符串之间的数据
Echo Off&Setlocal EnabledelayedexpansionFor \/f "tokens=* delims=" %%i in (d.txt) do (Set str=%%iIf "!str:~0,9!" equ "Person: 1" (Set n=1) else (If !n! geq 1 (If !n! leq 2 (Set \/a n+=1) else (Set n=)) else (Echo %%i)))Pause或者保留省略号内容 Echo ...

如何用批处理获取文本中两段指定字符串中间的内容
echo offfor \/f "tokens=2 delims=[]" %%i in ('findstr \/i counts a.txt^|findstr match') do echo %%i

批处理 实现批量替换多个文本文档中指定行中的字符或修改行中内容_百度...
copy "templog.txt" "%G%%P%"del \/q \/f \/a "templog.txt"start "" "%file%"&exit 现在再请教一下,如果上述 DEFA=TEST 中的 TEST 不是常数而是一个变量,如由诸如判定当前目录或盘符等命令自动产生后加在 DEFA= 后面合成一等式字符串再与TXT文件中第五行的内容进第比较替换,则又该如何...

求批处理写个删除当前目录下,所有指定名字的子文件夹中包含指定字符的文...
以下是一个批处理脚本,可以删除当前目录下指定文件夹中包含指定字符的文件。具体要删除哪些字符,可以在`set`命令中的`filePatterns`变量中进行修改,以逗号分隔多个字符。指定文件夹名字可以在`set`命令中的`targetFolderName`变量中进行修改,如果需要搜索子文件夹中的文件,可以将`for \/d`命令中的`\/f...

求bat批处理命令,实现文件夹下多文件内指定位置字符串替换
将bat文件放在文件夹(含有要修改的文件、文件夹)中。这个代码的作用是删除,如果要替换,将这一句 Set b=!a:-a=!修改成 Set b=!a:-a=替换!echo off&SetLocal EnableDelayedExpansion For \/f "delims="i in ('dir \/b')do (Set a=%%i Set b=!a:-a=!ren "!a!""!b!")pause ...

相似回答