bat批处理查找TXT文本指定内容后几位进行字符串替换

以TXT格式读取其他软件IWP文件内容
#进行查找字符串替换
#查找指定的内容(ZOOM 开始到后面第一个)结束,进行多次字符串替换。

TXT文本内容:
a
b
c
d
e(asdfg.jdlfhh)iryroqppe
f(ZOOM 1.23456789)askd
g(ZOOM 2.234567)sdkl
hdgskal
lfjdggsvwhuri

#查找(ZOOM 1. 2开始到)结束
替换为甲
#查找(ZOOM 2.2 开始到)结束
替换为乙

将甲替换为(ZOOM 4.987654)
将乙替换为(ZOOM 3.558999)

最后在原文件保存
我试过很多方法查找替换,文件大小减半,不知道什么情况,特此请教各位

PS:会替换很多个,ZOOM 后面是随机数,所以需要查找到后面的)

这篇博客和你的问题很相似,参考:

你都没有描述清楚,f(ZOOM 1.23456789)askd、g(ZOOM 2.234567)sdkl这里的输出是什么?

a
b
c
d
e(asdfg.jdlfhh)iryroqppe
f(ZOOM 1.23456789)askd
g(ZOOM 2.234567)sdkl
hdgskal
lfjdggsvwhuri

@echo off

setlocal enabledelayedexpansion

set "inputFile=input.txt"
set "outputFile=output.txt"

:: 定义目标替换字符串及其替换值
set "target1=ZOOM 1."
set "replacement1=(ZOOM 4.987654)"
set "target2=ZOOM 2.2"
set "replacement2=(ZOOM 3.558999)"

:: 读取输入文件并进行替换操作
for /f "tokens=*" %%a in (%inputFile%) do (
    set "line=%%a"
    :: 查找子字符串起始位置
    set "start=!line:*%target1%=!"
    if not "!start!"=="!line!" (
        :: 查找子字符串结束位置
        for /f "delims=)" %%b in ("!start!") do (
            set "substring=!target1!%%b"
            :: 进行替换操作
            set "line=!line:%substring%=%replacement1%!"
        )
    )

    :: 查找另一个子字符串
    set "start=!line:*%target2%=!"
    if not "!start!"=="!line!" (
        :: 查找另一个子字符串结束位置
        for /f "delims=)" %%b in ("!start!") do (
            set "substring=!target2!%%b"
            :: 进行替换操作
            set "line=!line:%substring%=%replacement2%!"
        )
    )

    echo !line! >> %outputFile%
)

:: 将输出文件重命名为输入文件
move /y %outputFile% %inputFile%

echo 替换完成。

批处理批量替换文本内容,用bat代码全篇替换txt文本文件中指定字符信息
可以参考下


批处理批量替换文本内容,用bat代码全篇替换txt文本文件中指定字符信息_批量修改txt内容_轶软工作室的博客-CSDN博客 批处理批量替换文本内容,用bat代码全篇替换txt文本文件中指定字符信息,替换路径不要写错了,替换内容尽量不要带空格,配合任务计划可以一劳永逸,其他请自行测试,感谢关注轶软工作室。@echo offsetlocal EnableDelayedExpansionset path_str="C:\Users\Admini_批量修改txt内容 https://blog.csdn.net/usenk/article/details/128786710

你可以使用批处理脚本来实现这个功能。下面是一个示例脚本:

@echo off
setlocal enabledelayedexpansion

set "input_file=input.txt"
set "output_file=output.txt"

set "search_start=ZOOM "
set "search_end=)"

set "replace_1=甲"
set "replace_2=乙"

set "replace_甲=(ZOOM 4.987654)"
set "replace_乙=(ZOOM 3.558999)"

set "replace_flag="

for /f "delims=" %%a in ('type "%input_file%"') do (
    set "line=%%a"
    if defined replace_flag (
        if "!line:~0,1!"=="%search_end%" (
            set "replace_flag="
        ) else (
            set "line=!line:%replace_1%=%replace_甲%!"
            set "line=!line:%replace_2%=%replace_乙%!"
        )
    ) else (
        if "!line:~0,5!"=="%search_start%" (
            set "replace_flag=true"
        )
    )
    echo !line!
) >> "%output_file%"

echo 替换完成!

将上述脚本保存为一个批处理文件(例如replace.bat),并将输入文件名设置为input.txt,输出文件名设置为output.txt。然后运行该批处理文件,它将读取input.txt文件中的内容,并根据你的要求进行字符串替换,最后将结果保存到output.txt文件中。

请确保输入文件中的每一行都以换行符结尾,否则可能会导致替换结果不正确。

希望这可以帮助到你!如果有任何问题,请随时问我。

@echo off
setlocal enabledelayedexpansion

set "filename=input.txt"
set "output=%~dp0output.txt"

REM 读取文本文件内容并进行查找和替换
for /f "tokens=*" %%a in (%filename%) do (
    set "line=%%a"
    
    REM 查找指定的内容开始
    echo !line! | find "ZOOM " >nul
    if !errorlevel! equ 0 (
        REM 获取待替换的字符串
        set "substring=!line:*ZOOM =!"
        set "substring=!substring:~0,-1!"
        
        REM 进行多次字符串替换
        if "!substring!" == "1.23456789" (
            set "line=!line:ZOOM 1.23456789=甲!"
        ) else if "!substring!" == "2.234567" (
            set "line=!line:ZOOM 2.234567=乙!"
        )
    )
    
    REM 写入到新的输出文件
    echo !line!>>%output%
)

REM 将最后的替换结果保存到原文件
move /y %output% %filename%

教你个方法,刚好最近遇到处理几个G的txt文件:文件太大,你在本地电脑打不开的,虚拟机上可以使用split -b + 切分大小(如500m) +文件名

步骤1、把txt文件上传到自己的虚拟机(这样操作也不影响你的元数据)

步骤2、这里根据你指定的txt内容模拟了下:

img



步骤3、替换内容:

使用转义字符 \ 来匹配括号和句点,因为它们是正则表达式中的特殊字符。
. 表示匹配除换行符以外的任意字符,而 .\+ 表示匹配一个或多个字符。

1、#查找(ZOOM 1. 2开始到)结束
替换为甲

使用正则表达式匹配:
\(ZOOM 1\.2.\+\)
:%s/\(ZOOM 1\.2.\+\)/甲)/g

替换结果:

img

2、#查找(ZOOM 2.2 开始到)结束
替换为乙

使用正则表达式匹配:\(ZOOM 2\.2.\+\)
:%s/\(ZOOM 2\.2.\+\)/乙)/g

替换结果:

img

批处理是一种常见的命令行脚本语言,可以在Windows系统中使用。在这篇文章中,我们将介绍如何使用BAT批处理来查找TXT文本中的指定内容,并在找到指定的内容后,对其后面的字符进行替换。

步骤一: 创建批处理文件

首先,我们需要打开记事本或者其他代码编辑器,创建一个新的批处理文件。在新的文件中,您可以开始编写批处理脚本。

步骤二:查找TXT文件

在批处理文件中,我们可以使用“findstr”命令来查找指定的TXT文件。使用以下命令来搜索TXT文件:

findstr /C:"my_text" "C:\path\to\my\file.txt"

这个命令将搜索名为“file.txt”的TXT文件,并查找文本中包含“my_text”的行。如果找到了匹配的行,findstr将打印匹配的行。

步骤三:截取字符串

在我们找到了指定的文本后,我们需要截取它后面的字符串。为此,我们可以使用“FOR”循环和子字符串命令。

使用以下代码来进行截取:

@echo off
setlocal enabledelayedexpansion

for /f "delims=" %%a in ('findstr /C:"my_text" "C:\path\to\my\file.txt"') do (
    set str=%%a
    set str=!str:*my_text=!
    echo !str!
)

这段代码包含了一个for循环,它会遍历每一行文本中找到的匹配行。在每一个循环中,我们将找到的行存储在变量“str”中,并使用“*my_text=”从字符串中截取匹配文本后面的所有字符,将结果存储在变量“str”中。

步骤四:替换字符串

现在我们已经成功地截取了我们需要替换的字符串,我们可以使用“set”命令来替换它。使用以下代码来进行替换:

@echo off
setlocal enabledelayedexpansion

for /f "delims=" %%a in ('findstr /C:"my_text" "C:\path\to\my\file.txt"') do (
    set str=%%a
    set str=!str:*my_text=my_replacement_text!
    echo !str!
)

在这个代码片段中,我们使用“*my_text=my_replacement_text”将“my_text”字符串后面的所有字符替换为“my_replacement_text”。这将打印出替换后的文本。

步骤五:保存修改后的文件

最后,我们需要将修改后的文本保存回原始的TXT文件中。为此,我们可以使用“echo”命令,然后将输出重定向到原始文件中。

使用以下代码来保存修改后的文件:

@echo off
setlocal enabledelayedexpansion

(for /f "delims=" %%a in (C:\path\to\my\file.txt) do (
    set str=%%a
    set str=!str:*my_text=my_replacement_text!
    echo !str!
)) > C:\path\to\my\file.txt.new

move /y C:\path\to\my\file.txt.new C:\path\to\my\file.txt

这个代码片段使用“for”循环从原始文件中读取每一行文本,并使用“set”命令在每一个循环中进行替换。然后,我使用输出重定向将修改后的文本保存到一个新的文件中。最后,我使用“move”命令将新的文件重命名为原始文件的名称。

结论:

通过这些步骤,您可以成功地使用BAT批处理来查找TXT文本中的指定内容,并在找到指定的内容后,对其后面的字符进行替换。这种技术可以应用于各种不同的场景,例如根据需要修改配置文件,自动修改大量数据等等。

批处理脚本是指一组预定义的命令和组合命令,这些命令可以让您一次性运行多个命令。在Windows中,我们可以使用批处理脚本来执行各种任务,例如查找文本文件中的特定内容并进行替换。在本文中,我们将使用bat批处理脚本查找文本文件中指定内容的后几位,并进行字符串替换。

第一步:打开记事本

打开记事本并创建一个新文件。在新文件中,我们将编写我们的批处理脚本。

第二步:编写批处理脚本

在新文件中,我们将编写我们的批处理脚本。以下是一个示例脚本:

@echo off
setlocal EnableDelayedExpansion

set FINDTEXT=hello
set REPLACE=world

for /f "delims=" %%a in ('findstr /c:%FINDTEXT% *.txt') do (
    set LINE=%%a
    set END=!LINE:~-3!
    set NEWLINE=!LINE:%FINDTEXT%=%REPLACE%!
    set NEWLINE=!NEWLINE:~-3!
    if not !END!==!NEWLINE! (
        echo !LINE!>>output.txt
    )
)

echo Complete!

接下来,我们将逐一解释这个脚本中的每行代码。

  • @echo off: 关闭命令提示符上的回显,防止显示每个命令的执行结果。

  • setlocal EnableDelayedExpansion: 启用延迟扩展,以便在批处理脚本中使用变量。

  • set FINDTEXT=hello: 定义要查找的文本。

  • set REPLACE=world: 定义要替换的文本。

  • for /f "delims=" %%a in ('findstr /c:%FINDTEXT% *.txt') do (...): 在txt文件中查找FINDTEXT的值,并对查找结果进行遍历。

  • set LINE=%%a: 将当前行赋值给LINE变量。

  • set END=!LINE:~-3!: 从LINE变量的末尾提取3个字符,将其赋值给END变量。

  • set NEWLINE=!LINE:%FINDTEXT%=%REPLACE%!: 将LINE变量中FINDTEXT的值替换为REPLACE的值,将其赋值给NEWLINE变量。

  • set NEWLINE=!NEWLINE:~-3!: 从NEWLINE变量的末尾提取3个字符,将其赋值给NEWLINE变量。

  • if not !END!==!NEWLINE! (...): 如果END变量的值与NEWLINE变量的值不相同,则将当前行写入output.txt文件。

  • echo Complete!: 输出“完成”消息。

第三步:运行脚本

将保存为.bat文件的批处理脚本复制到包含txt文件的文件夹中。然后双击批处理脚本文件以运行它。批处理脚本将扫描文件夹中的所有TXT文件,并查找包含FINDTEXT变量值的文本行。对于每个匹配的行,批处理脚本将提取该行的最后3个字符并将其与替换后的行的最后3个字符进行比较。如果它们不同,则该行将写入output.txt文件。

总结

在本文中,我们介绍了如何使用bat批处理脚本来查找文本文件中的特定内容并进行替换。我们编写了一个可重复使用的脚本,它可以在txt文件中查找指定的文本并检查其后3位是否与替换后的文本的后3位匹配。如果不匹配,则将该行写入新文件中。您可以使用这个简单的脚本来快速查找和替换大量的文本文件中的内容。

在Windows批处理(.bat)中操作字符串的能力是有限的,它不像Python或其他脚本语言那样拥有强大和方便的字符串操作功能。但即便如此,我们仍然可以使用一些基本的命令来实现指定内容查找并替换的功能。

下面是一个简单的批处理脚本示例,用于查找一个文本文件中的一行,然后替换这一行的指定内容:

@echo off
setlocal enabledelayedexpansion

set "file=example.txt"

for /f "delims=" %%i in (%file%) do (
  set "line=%%i"
  REM 判断这一行是否包含你要查找的内容
  echo !line! | findstr /C:"target_string"
  IF !errorlevel! EQU 0 (
    REM 进行替换操作
    set "line=!line:target_string=new_string!"
    echo !line! >> newfile.txt
  ) ELSE (
    echo !line! >> newfile.txt
  )
)

REM 用新文件替换旧文件
if exist newfile.txt (
  del %file%
  ren newfile.txt %file%
)

在上述脚本中,"target_string"为你要查找的目标字符串,"new_string"为你要将目标字符串替换成的新字符串。set "line=!line:target_string=new_string!"是替换操作的核心部分,它将每一行中的"target_string"替换成"new_string"。

然后对文件进行迭代,如果某行包含"target_string",那么就进行替换操作并将结果写入到新的文件newfile.txt中;否则,将原行内容写入新文件。最后,如果新文件存在,则删除原文件并用新文件替换原文件。

请注意:这只是一个简单的例子,如果你的需求更加复杂或者目标文件非常大,那么你可能需要使用一种更强大的脚本或程序语言,比如Python、Perl或Powershell等。

关于bat批处理查找TXT文本指定内容后几位进行字符串替换的方法,可以参考资料:
使用.bat文件查找并替换目录中包含的多个文件中的字符串:https://www.5axxw.com/questions/content/eyr5mi
或者这个方法:
bat批处理 查找替换:批处理如何查找并替换文本里特定字符串中的部分内容:https://blog.51cto.com/u_3078781/3287563

参考newbing
你可以使用批处理脚本来完成对TXT文本中指定内容后几位的字符串替换。下面是一个示例的批处理脚本,可以根据你的需求进行修改:

@echo off
setlocal enabledelayedexpansion

set "search=ZOOM"
set "replace1=甲"
set "replace2=乙"
set "replace3=(ZOOM 4.987654)"
set "replace4=(ZOOM 3.558999)"

set "tempfile=temp.txt"
set "outputfile=output.txt"

for /F "delims=" %%G in (input.txt) do (
    set "line=%%G"
    setlocal enabledelayedexpansion
    if "!line:~0,4!"=="%search%" (
        set "start=!line!"
        set "temp=!line!"
        set "result=!line!"
        :search_loop
        set /a "len=len+1"
        if "!temp:~%len%,1!"==")" (
            set "end=!temp:~%len%!"
            
            rem 替换操作
            set "result=!result:%replace1%=!replace3%!"
            set "result=!result:%replace2%=!replace4%!"
            
            set "result=!start!!result!%end%"
            echo !result!>> %tempfile%
            endlocal
            set "loop_end=true"
        ) else (
            set "temp=!temp:~1!"
            goto search_loop
        )
    ) else (
        echo !line!>> %tempfile%
    )
    endlocal
)

move /Y %tempfile% %outputfile%

请根据你的具体需求修改以下内容:

  • input.txt替换为你要处理的TXT文件路径。
  • ZOOM替换为你要查找的内容。
  • 替换为你要替换的字符串。
  • temp.txtoutput.txt分别为临时文件和输出文件的路径。你可以根据需要修改这些路径。

这个批处理脚本会逐行读取input.txt文件的内容,并对匹配到ZOOM的行进行替换操作。将替换后的结果输出到临时文件temp.txt中,最后将临时文件重命名为output.txt