用批处理实现文本文件中指定字符串的替换 zz

主题 用批处理实现文本文件中指定字符串的替换 « 上一主题 | 下一主题 »
uglyfrog
发表于:2005-03-02 02:50 回复
发帖: 249
积分: 0
注册: 2001-12-30
其实批处理也可以干很多事的,下面的批处理文件实现了对指定目录下的特定文件类型中的字符串进行替换的功能。虽然在unix或linux系统写一条语句就能实现,但在windows下用批处理也总比编一段程序方便些吧。

引用


@echo off



setlocal



rem DPATH   : 指定目录

rem FILETYPE: 指定文件类型

rem SCONTENT: 替换前的字符串

rem DCONTENT: 替换后的字符串

rem TMPFILE : 临时文件



set DPATH=c:/test

set FILETYPE=*.txt

set SCONTENT=aaa

set DCONTENT=bbb

set TMPFILE=%random%.tmp



for /r %DPATH% %%i in ( %FILETYPE% ) do (



    if exist %TMPFILE% ( del /f/q %TMPFILE% )



    for /f "tokens=*" %%j in (%%i) do (

      set TMP=%%j

      echo !TMP:%SCONTENT%=%DCONTENT%! >> %TMPFILE%

    )



    move /y %TMPFILE%  %%i

)



endlocal



把以上内容保存为replace.bat,然后在命令行下执行cmd /v:on /c replace.bat
本例子实现了把c:/test目录(包括子目录)中所有txt文件中的aaa替换成bbb。
zzzevazzz
发表于:2005-03-02 12:53 回复
发帖: 275
积分: 0
注册: 2002-05-13
完全不行,。楼主你测试过没有啊?
首先,对带空格的文件无法正确运行。
而且,“echo !TMP:%SCONTENT%=%DCONTENT%! >> %TMPFILE%”是什么意思?
被替换的文件都成这样了:
!TMP:aaa=bbb!  
!TMP:aaa=bbb!  
!TMP:aaa=bbb!
---
Ph4nt0m Security Team
http://ph4nt0m.org/
uglyfrog
发表于:2005-03-02 14:21 回复
发帖: 249
积分: 0
注册: 2001-12-30
不好意思,我所给出的bat只是简单演示了它具有这种功能。并没有经过太严格的测试。如果有谁有兴趣的话,可以继续完善或发掘新的功能。

至于zzzevazzz所说的替换的内容不对,我用的系统是2000的,不知道你的是什么。如果你的系统也是2000的话,可以参见cmd和set命令的帮助部分,查看有关了延迟环境变量的内容。别忘了在执行bat文件的同时加上cmd的/v:on参数。别的系统我没试过。我想2000以后的系统应该都有这个特性。

还有就是如果我连自己都试过完全不行的话我也不会发上来了,不过还是要谢谢你,因为你帮我指出了其中的问题。同时向你学习,因为你对待事物的严谨态度。
zzzevazzz
发表于:2005-03-02 22:21 回复
发帖: 275
积分: 0
注册: 2002-05-13
我没注意到“cmd /v:on /c”,抱歉。
但是还有问题,被替换的文本在行尾多了许多的空格,原因是
echo !TMP:%SCONTENT%=%DCONTENT%! >> %TMPFILE%
这条语句的">>"前多了不必要的空格。

文件名带空格的问题容易解决,下面是我修改过的:

@echo off
setlocal

rem DPATH   : 指定目录
rem FILETYPE: 指定文件类型
rem SCONTENT: 替换前的字符串
rem DCONTENT: 替换后的字符串
rem TMPFILE : 临时文件

set DPATH=C:/test
set FILETYPE=*.txt
set SCONTENT=aaa
set DCONTENT=bbb
set TMPFILE=%random%.tmp

for /r %DPATH% %%i in (%FILETYPE%) do (
    if exist %TMPFILE% (del /f/q %TMPFILE%)
    for /f "usebackq tokens=*" %%j in ("%%i") do (
      set TMP=%%j
      echo !TMP:%SCONTENT%=%DCONTENT%!>>%TMPFILE%
    )
    move /y %TMPFILE% "%%i"
)

endlocal
---
Ph4nt0m Security Team
http://ph4nt0m.org/
uglyfrog
发表于:2005-03-03 00:10 回复
发帖: 249
积分: 0
注册: 2001-12-30
晚上抽空又看了一下。那句echo在批处理中总是解析成
echo !TMP:aaa=bbb!  1>>25417.tmp,所以会在行尾多一个空格。
所以可以用如下的方法解决:
echo !TMP:%SCONTENT%=%DCONTENT%!>nul 1>>%TMPFILE%

还有那个文件名中有空格的问题,你的处理方法不错,充分利用了usebackq的特性。也可以变通的用:
for /f "tokens=*" %%j in ('type "%%i"') 来搞定。
allyesno
发表于:2005-06-17 09:21 删除 编辑 回复
发帖: 1128
积分: 0
注册: 2003-06-06
bat的功能还是太弱了

如果只是字母和数字 这个程序还可以执行

如果文本包含^&":;<> 这些字符 处理起来很麻烦

没有专门对字符 和字符串 操作的函数 也不具备多线程的性能 也不能读写内存 呵呵

allyesno 编辑于 2005-06-17 09:24
---
▄︻┻┳═一★
QQ溢出了~~~~
           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机的单个IO口可以发送数据吗_关于51单片机各个引脚它的功能你了解多少?...

对于40引脚双列直插51单片机各个引脚功能情况分析。P0端口一默认是开漏准双向IO口&#xff0c;没有输出没有驱动能力&#xff0c;要做逻辑输出要在外部接上拉电阻。P0端口除了作为普通的输入输出功能&#xff0c;还可以用来当做数据总线接口或者地址总线&#xff0c;当外面扩展…

Spring-Boot——Cache

简单使用 1. maven 依赖 2. 开启缓存配置 在启动类上开启缓存 EnableCaching 3. 使用缓存 Cacheable 是将方法的返回值保存到缓存中CachePut 是根据key更新缓存中的数据CacheEvict 是根据key删除缓存数据 Cacheable(cacheNames {"emp"}, key "#id") publ…

awk中文手册

awk中文手册下载&#xff1a;http://www.klabaster.com/freeware.htm#mawk1. awk简介awk 是一种编程语言&#xff0c;用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件&#xff0c;或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进…

在vue中操作DOM--this.$nextTick()

虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考&#xff0c;避免直接接触 DOM&#xff0c;但是有时我们确实要这么做。比如一个新闻滚动的列表项。如果在这里需要操作dom, 应该是等待 Vue 完成更新 DOM之后。 一、新闻滚动列表 1、在created函数中获取后台数据&#…

python如何移动图片_python之详细图像仿射变换讲解(图像平移、旋转、缩放、翻转),一文就够了,赶紧码住...

仿射变换简介 什么是放射变换 图像上的仿射变换, 其实就是图片中的一个像素点&#xff0c;通过某种变换&#xff0c;移动到另外一个地方。 从数学上来讲&#xff0c; 就是一个向量空间进行一次线形变换并加上平移向量&#xff0c; 从而变换到另外一个向量空间的过程。 向量空间…

git merge用法_常用命令之git操作(进阶篇)

几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来&#xff0c;然后在不影响主线的同时继续工作。有人把 Git 的分支模型称为必杀技特性&#xff0c;而正是因为它&#xff0c;将 Git 从版本控制系统家族里区分出来。不同的分支可以理解为…

2G内存刚刚好 浅谈4G内存对笔记本的影响

随着Intel P3x系列芯片组的发布&#xff0c;DDR3内存的普及日益临近&#xff0c;AMD K10系列处理器AM2规格也正式支持DDR3内存&#xff0c;明年即将面临淘汰的DDRII内存是越来越便宜了。很多笔记本用户在购买笔记本的时候都把是否支持4G内存作为一个总要的衡量标准。官方资料里…

由object元素引出的事件注册问题和层级显示问题

项目有一个双击监控视频全屏的需求&#xff0c;视频播放使用的是IE下的ActiveX控件&#xff0c;web页面中使用HTML嵌入对象元素object。预期方案如下&#xff1a; 1.在开发ActiveX控件时加入双击事件。 2.通过div包裹object&#xff0c;控制div的大小从而间接实现全屏效果。 在…

cad钣金展开插件_钣金高级工考试大小头手工展开图步骤教程

提醒&#xff1a;点上方↑↑↑“钣金学习网”免费关注简单方法一: 等分弧画法简单方法二: 角度计算画法1、先画一条中心直线&#xff0c;在线上取一点A&#xff0c;过&#xff21;点画一条与中心线垂直相交线。量取大头半径以&#xff21;点为起点在相交线上标注一点&#…

介绍一个新鲜玩意 开源的杀毒软件

有“免费的午餐”我们为什么不吃呢&#xff1f;杀毒软件一定要购买或用D版吗&#xff1f;先别忙着下结论&#xff0c;请耐心看完本文&#xff0c;然后再告诉我你是怎么想的。&#xff08;一&#xff09;、ClamWin Free Antivirus 开源反病毒软件 GPL协议SourceForge页面&#x…

没有可用软件包 jenkins。_Jenkins分布式构建与并行构建

Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是“masteragent&#xff08;slave&#xff09;”架构。Jenkins master负责提供界面、处理HTTP请求及管理构建环境&#xff1b;构建的执行则由Jenkins agent负责 Jenkins agent的横向扩容&#xff1a;只需要增加agent就…

使用ping命令检查路由之解惑

网络工程师都会用到Ping&#xff0c;它是 检查 路由问题的有效办法。但也常听工程师抱怨&#xff1a;不可能&#xff0c;怎么会不通呢&#xff1f; 这样的困惑一般发生在自认为路由设置正确的时候。举几个笔者遇到的问题&#xff0c;欢迎大家补充。 最简单的三种情况&#xff…

什么是慢查询?如何通过慢查询日志优化?

日志就跟人们写的日记一样&#xff0c;记录着过往的事情。但是人的日记是主观的&#xff08;记自己想记的内容&#xff09;&#xff0c;而数据库的日志是客观的&#xff0c;根据记录内容分为以下好几种日志&#xff1a; a、错误日志&#xff1a;记录启动、运行或停止mysqld时出…

qstring去掉特定字符_如何花式、批量且操作简单地处理字符?

文本字符的规范化&#xff0c;是批量处理的前提。多来源数据或是数据收集本身就必然存在不规范情况&#xff0c;于是批量地完成它就成了常见的需求。对于花式批量处理&#xff0c;自然要说到正则表达式。“正则表达式是对字符串操作的一种逻辑公式&#xff0c;就是用事先定义好…

动漫字幕组 集合

贪婪大陆被非法收购始末 http://blog.csdn.net/freexploit/archive/2005/11/21/534050.aspx预测已经实现~~还好还好先把各字幕组的论坛 地址找了来~~像什么 花园 漫游的这些 大家是熟悉的不能在熟悉了~~所以我就没打上去了~~有不全的请朋友们自己找找吧----------~.~而且现在几…

性能度量RMSE

回归问题的典型性能度量是均方根误差&#xff08;RMSE:Root Mean Square Error&#xff09;。如下公式。 m为是你计算RMSE的数据集中instance的数量。x(i)是第i个实例的特征值向量 ,y(i)是其label&#xff08;期望的模型输出&#xff09;。如下&#xff1a;X是包含了所有实例的…

最近幻影的两个ARP欺骗工具 挺不错的

arpspoof 3.1b主要功能&#xff1a;ARP欺骗过程中进行数据修改&#xff0c;实现会话劫持攻击说明&#xff1a; 本程序公开源代码&#xff0c;为了换取更多朋友的指教实例: 欺骗192.168.0.108访问百度网站的全过程&#xff08;注&#xff1a;#后是我加的注释&#xff09;效果: 1…

python中math库最大值_python-math库解析

math库的数学常数&#xff08;共4个&#xff09; math.pi 表示Π&#xff0c;圆周率&#xff0c;值为3.141592653589…… math.e 表示e&#xff0c;自然对数&#xff0c;值为2.718…… math.inf 表示正无穷大&#xff0c;负无穷大为-math.inf math.nan 表示非浮点数标记 math库…

idea启动项目没错,可是debug却一直启动不起来

原因很简单&#xff1a; 断电打的太多了导致的&#xff0c;去掉不需要的断点之后就好了&#xff01; 转载于:https://www.cnblogs.com/sllcom/p/9327908.html

一个牛人的经历---北京八年——从极度贫困到财务自由

一个牛人的经历---北京八年——从极度贫困到财务自由 第一章&#xff1a; 八年巨变 我1996年7月从东北的一所曾经非常有名的工科大学毕业&#xff0c;快毕业时听了一位同乡校 友姐姐的话“宁到好地方&#xff0c;不到好单位”&#xff0c;经过一番各式各样的努力&#xff0c;96…