【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)

简介: 该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。

⭐⭐⭐一、脚本用途说明🌙🌙🌙:

把同一目录下的多个文件中的字符串123替换成字符串abc;

⭐⭐⭐二、操作步骤🌙🌙🌙:

1.将以下批处理脚本copy到本地任意目录,新建一个批量替换.bat文件(随各人喜好定义,文件名不固定);
2.因脚本中目录已经写成c:\test,故请在c盘创建一个test目录,并在该test目录下创建几个以t开头的txt文件,如:test1.txt,test2.txt.test3.txt等(随各人喜好,文件名、文件个数均不限定),但是创建的txt文件请包涵要替换的字符123;
3.直接点击运行批量替换.bat文件,然后打开创建的每个txt文件,观察会发现123都已经被替换成了abc

⭐⭐⭐三、总结🌙🌙🌙:

请各位多调试几次,爱动脑动手的小伙伴可以修改一下文件内容以及按照自己的思路尝试修改一下脚本内容,看看修改后执行的效果如何,这样的话,会理解的更为深刻一些
提示:如果是刚开始接触批处理这块的小伙伴,本脚本就是一个很好的学习范例,小伙伴们可以从中去扩展其他知识点,加油!

⭐⭐⭐四、脚本🌙🌙🌙

@echo off

rem 进入批处理文件所在的路径
cd c:\test

echo ***** Replace "123" as "abc" *****
rem 定义要替换的新旧字符串
set strOld=123
set strNew=abc

rem 定义变量修改本地化延期
setlocal enabledelayedexpansion

rem 循环取出要处理的文件名
for /f "tokens=*" %%i in ('dir c:\test\t*.txt /b') do (
    set "var=%%i"
    if not !var!.==. (
rem 单个文件一行行处理,将旧字段替换成新字段
    for /f "tokens=*" %%j in (!var!) do (
        set "tmp=%%j"
        if not !tmp!.==. (
          set "tmp=!tmp:%strOld%=%strNew%!"
          rem 将处理后的每一行记录追加到temp.txt文件中
          echo !tmp!>>temp.txt
        )
    )
    rem 在单个文件的每一行经过替换操作后,将处理后的文本从temp.txt临时文件剪贴到目标处理文件中(剪贴后临时文件会自动删除)
    move temp.txt !var!
    )
)

pause

五、核心逻辑及思维导图:

DOS批处理脚本逻辑

1. 脚本用途

  • 目的: 批量替换文件中的字符串。
  • 操作: 将目录下文件中的字符串"123"替换为"abc"。

2. 操作步骤

  • 步骤1: 复制脚本到本地目录并创建批处理文件。
  • 步骤2: 在指定目录下创建包含特定字符串的文本文件。
  • 步骤3: 运行批处理文件并检查替换结果。

3. 脚本内容

  • 进入目录: 切换到包含文本文件的目录。
  • 设置变量: 定义要替换的旧字符串和新字符串。
  • 启用延迟变量展开: 为了在循环中正确处理变量。
  • 循环处理文件: 对目录下的每个文本文件进行操作。
    • 读取文件内容: 逐行读取文件内容。
    • 替换字符串: 将每行中的旧字符串替换为新字符串。
    • 写入临时文件: 将替换后的内容写入临时文件。
    • 移动临时文件: 将临时文件内容移动到原文件,完成替换。

4. 脚本示例

  • 命令: @echo off
  • 目录切换: cd c:\test
  • 变量设置: set strOld=123set strNew=abc
  • 循环命令: for /f "tokens=*" %%i in ('dir c:\test\t*.txt /b') do
  • 文件处理: for /f "tokens=*" %%j in (!var!) do
  • 字符串替换: set "tmp=!tmp:%strOld%=%strNew%!"
  • 写入临时文件: echo !tmp!>>temp.txt
  • 移动文件: move temp.txt !var!
  • 暂停命令: pause
目录
相关文章
|
18天前
|
弹性计算 Ubuntu Linux
阿里云系统运维管理OOS一键安装宝塔面板,这个功能太牛了!
宝塔面板是实用的服务器管理工具,支持多种操作系统(如Ubuntu、CentOS等)。通过阿里云OOS可一键安装。安装前提包括ECS实例运行中且有公网,安全组需开放8888端口。安装步骤简单,进入ECS控制台选择预装应用并确认下单,完成后在控制台查看详情和登录信息。最后验证安装结果,确保能成功访问宝塔面板URL。
145 82
|
1月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
73 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
监控 测试技术
slb测试会话保持功能
slb测试会话保持功能
58 6
|
3月前
|
测试技术
Appscan手工探索、手工测试功能实战
Appscan手工探索、手工测试功能实战
|
3月前
|
安全 Linux 网络安全
Kali 渗透测试:利用HTA文件进行渗透攻击
Kali 渗透测试:利用HTA文件进行渗透攻击
64 1
|
4月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
308 3
快速上手|HTTP 接口功能自动化测试
|
4月前
|
测试技术 程序员
关于字符串为空的几个性能测试
本文通过实验对比了两种字符串赋值方式(`string str="";` 和 `string str=string.Empty;`)及五种判断字符串是否为空的方法的性能差异。实验结果显示,使用 `string.Empty` 的赋值方式性能更优,且在判断字符串是否为空时,`.Length==0` 方法最为高效,其次是 `str.Equals("")` 和 `str==string.Empty` 等方法。文章提供了详细的测试代码和结果分析。
31 3
关于字符串为空的几个性能测试
|
4月前
|
Java C++
代码文件间重复性测试
本文介绍了如何使用代码相似性检测工具simian来找出代码文件中的重复行,并通过示例指令展示了如何将检测结果输出到指定的文本文件中。
|
3月前
|
安全 Linux 网络安全
Kali渗透测试:自动播放文件攻击
Kali渗透测试:自动播放文件攻击
49 0
|
5月前
|
Web App开发 敏捷开发 测试技术
自动化测试之美:使用Selenium WebDriver进行网页功能验证
【8月更文挑战第29天】在数字时代,软件质量是企业竞争力的关键。本文将深入探讨如何通过Selenium WebDriver实现自动化测试,确保网页应用的可靠性和性能。我们将从基础设置到编写测试用例,逐步引导读者掌握这一强大的测试工具,同时分享实战经验,让测试不再是开发的负担,而是质量保证的利器。

热门文章

最新文章