BAT批处理方式进行文件的字符串搜索替换

在matlab提取txt中的实验数据,由于记录原因,传感器出错后把数字存为了nan,对于提取数据很不方便。

于是查了查如何批处理对txt文本进行替换。

CMD/BAT 批处理的方式,进行文件的字符串搜索替换工作,参考博客

@echo off
setlocal EnableDelayedExpansionset "CurrCD=%~dp0"
set "strOld=aaaaa"
set "strNew=zzzzz":: 将当前目录(包括子目录)下的所有 TXT 文本中的 aaaaa 替换为 zzzzz
for /f %%i in ('dir /b /s /a:-d *.txt') do (powershell -Command "(gc %%i) -replace '%strOld%', '%strNew%' | Out-File -Encoding ANSII %%i"
)

基本语法解释:

在cmd中输入 命令 /? 可显示此命令的帮助信息

@echo off: 此语句常用于开头,表示不显示所有的命令行信息,包括此句

set :

SET [variable=[string]]variable  指定环境变量名。string    指定要指派给变量的一系列字符串。

for循环的基本格式

FOR %%variable IN (set) DO command [command-parameters]%%variable 指定一个单一字母表示可替换的参数。(set)    指定一个或一组文件。可以使用通配符。command  指定对每个文件执行的命令。command-parameters 为特定命令指定参数或命令行开关。

参数:FOR有4个参数 /d /l /r /f

FOR /D %%variable IN (set) DO command [command-parameters]

含义:如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

FOR /D %%variable IN (set) DO command [command-parameters]
含义:如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]

含义:检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。

FOR /L %%variable IN (start,step,end) DO command [command-parameters]
含义:该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。

/F 迭代及文件解析
使用文件解析来处理命令输出、字符串及文件内容。使用迭代变量定义要检查的内容或字符串,并使用各种options选项进一步修改解析方式。使用options令牌选项指定哪些令牌应该作为迭代变量传递。请注意:在没有使用令牌选项时,/F 将只检查第一个令牌。
文件解析过程包括读取输出、字符串或文件内容,将其分成独立的文本行以及再将每行解析成零个或更多个令牌。然后通过设置为令牌的迭代变量值,调用 for 循环。默认情况下,/F 传递每个文件每一行的第一个空白分隔符号。跳过空行。

dir命令

参考博客

/s 查找当前目录以及所有子目录下的文件
/b 舍弃标题与摘要内容
/d  跟宽式相同,但文件是按栏分类列出的。
/n  长列表格式 即 竖立格式 与光杆dir 下无异
/b /a:d 指定显示所有具有该属性的文件
/b /d&/w 交互使用时,/d&/w 开关 无效。
/q  显示文件所有权信息、或者说文件所有者信息
/w 宽行格式显示 X轴序列  文件名过长 无效
/d 宽行格式显示 Y轴序列   文件名过长 无效
/d & /w  会在在文件夹的前后添加"[]"X
/l 所显示文件名,全部为小写英文字母。
/c&/-c  禁用文件大小显示千位数分隔符。默认显示分隔符“,”  /-c  不显示分隔符。
/a:d 只显示文件夹(包括隐藏文件夹)
/a:h 只显示隐藏文件 (包括具有当前属性的其他三种文件、夹)
/a:r 仅显示只读文件(包括具有当前属性的其他三种文件、夹)
/a:s 仅显示系统文件(包括具有当前属性的其他三种文件、夹)
/a:a 只显示存档文件- - X----- 只显示文件 (包括具有存档属性的其他三种属性文件)  这个命令对应 /a:d  只显示文件夹。 windows中文件共有四种属性、
分别为 存档、只读、系统、隐藏
/O   用分类顺序列出文件。排列顺序      N  按名称(字母顺序)     S  按大小(从小到大)E  按扩展名(字母顺序)   D  按日期/时间(从先到后)G  组目录优先     -  反转顺序的前缀

逐个解释dir /b /s /a:-d *.txt

/b   舍弃标题与摘要内容
/s  查找当前目录以及所有子目录下的文件
/a:-d   只显示文件不显示文件夹
*.txt   要求仅显示txt文件

编码问题解释:在Out-File后加-Encoding ASNII 即可实现改变输出文本的编码,默认编码为UTF-16 LE

有意思的是,-Encoding utf8 输出编码为带有BOM的utf8


后续继续研究powershell的相关语法和命令

补充

如何删除包含特定字符串的所有行呢?

@echo off
setlocal EnableDelayedExpansion:: 删除 d:\aaa.txt 中,包含字符串 abc 的所有行
set "FileName=d:\aaa.txt"
set "sDelLine=abc"
powershell -Command "$data = foreach($line in gc %FileName%){ if($line -notlike '*%sDelLine%*') {$line}} $data | Out-File %FileName%"

BAT批处理文本替换相关推荐

  1. DOS循环:bat/批处理for命令详解之一 (史上虽详尽的总结和说明~~)

    DOS循环:bat/批处理for命令详解之一 (史上虽详尽的总结和说明~~) --- --- 前言: 虽然以前对批处理也算有点研究,但一直对for命令理解不够透彻,偶尔用时也是照猫画虎的用一下. 虽然 ...

  2. bat循环执行带参数_dos命令exit图文教程,结束退出CMD.EXE程序或当前bat批处理脚本...

    大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频. 今天我们学习dos命令中的exit这个命令,退出 CMD.EXE 程序(命令解释器)或当前批处理脚本 ...

  3. BAT 批处理命令 - 解决cmd控制台中文乱码问题实例演示

    BAT 批处理命令支持的是 ANSI 编码,如果用默认的 UTF-8 编码会报错.我们只要把编码改成 ANSI 就行了. 下图是我写了一个有问题的代码.[如果还能发现其它问题可以评论区留言哦!考验一下 ...

  4. bat 批处理切换到当前脚本所在文件夹

    bat 批处理切换到当前脚本所在文件夹 切换到当前脚本所在的文件夹 ? 1 cd  %~dp0 另外附上一些bat基本内容 ------------------------------ 批处理常用命令 ...

  5. bat批处理删除指定N天前的文件

    Windows下bat批处理,自动获取文件的最后修改时间,然后将指定多少天之前的文件删除,需要Windows支持forfiles命令,XP及以上系统都自带forfiles命令. 删除指定目录下7天前的 ...

  6. atitit.加入win 系统服务 bat批处理程序服务的法总结instsrv srvany java linux

    atitit.加入win 系统服务 bat批处理程序服务的法总结instsrv srvany  java linux 系统服务不同于普通视窗系统应用程式.不可能简简单单地通过执行一个EXE就启动视窗系 ...

  7. BAT批处理脚本结合SQL应用案例

    BAT批处理脚本结合SQL应用案例 本文是BAT(批处理脚本)结合SQL的应用,脚本结合了OSQL(可执行Transact-SQL语句 ).BCP(执行数据导入导出的工具).BLAT(命令行发邮件的工 ...

  8. bat批处理命令大全_DOS使用环境变量图文教程,bat批处理脚本查看调用环境变量命令...

    大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频. 今天我们学习在DOS和BAT批处理脚本中使用环境变量,环境变量是windows定义的一个变量,它有一 ...

  9. BAT批处理中的字符串处理详解(字符串截取)

    BAT批处理中的字符串处理详解(字符串截取 批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理功能有:截取字符串内容.替换字符串特定字段.合并字 ...

最新文章

  1. C++知识点31——使用C++标准库(关联容器multimap及其初始化,赋值,查找,添加,删除与迭代器失效)
  2. 08 - JavaSE之IO流
  3. MySQL多元复制_MySQL多源复制解决方案
  4. 图书馆管理系统——超期付款
  5. 洛谷P3265 装备购买
  6. 上海java工作经验与薪资_Java硕士京东工作1年,跳槽后他期望薪资26K,大家感觉他可以吗...
  7. C语言实现简单小游戏
  8. 开源中国软件频道_编程小黑马
  9. 462计算机连接错误,金蝶K3始终462错误,怎么处理???????
  10. STM32神舟III号 驱动直流电机学习(三 )
  11. PPT转换为PDF后,图片背景变成了黑色的解决方法
  12. 使用 Git 添加文件时,出现 Warning: LF will be replaced by CRLF in...提示及解决方案
  13. js-DOM offsetLeft 属性与 offsetTop 属性,制作网页动画等必学知识!
  14. 基于Java的物资租赁管理系统 MYSQL
  15. add_months()函数介绍
  16. mysql安装完后不能配置_安装完 MySQL 后必须调整的 10 项配置
  17. 网格系统设计方法是什么
  18. 3D眼镜种类以及原理
  19. FIFO学习:FIFO深度的计算、通过Verilog实现FIFO以及利用SRAM设计FIFO
  20. JAVA 发送阿里云短信

热门文章

  1. 免费下载英文文献的网站
  2. tick timer 间隔_adjtimex修改tick值用法举例
  3. Linux系统之复制粘贴命令
  4. axios 请求拦截器响应拦截器
  5. Ubuntu安装之,硬盘分区
  6. 遗传算法求解TSP问题(matlab实现)
  7. 降维算法-LDA线性判别分析实例
  8. matlab数学建模方法与实践 笔记1:快速入门
  9. pip安装指定keras版本
  10. Python爬虫之findall和lxml