DOS下实现内容替换

Linux下面进行字符串的替换倒是比较方便,有很多支持的命令,如SED等都是非常的方便,现在有需求要在WINDOWS下面实现运行字符串内容的替换,因为要根据不同的环境使用不同的配置文件中的值,于是就准备写一个DOS版的替换函数。

DOS下面也是有替换功能的,如使用:

@echo off
set aa=Hello Lily.
echo Replace Before:%aa%
echo Replace After:%aa:Lily=Tom%
pause
也能够实现字符串的替换,不过后面发现,当替换的内容中有如等号“=”等特殊符号时,这个函数就没有办法正常工作了,尝试对特殊符号进行转码也不行。

后面采用一种变通的方式实现:使用VBS,它是VB的一个子集,功能还是蛮强大的,这其中需要注意的就是给VBS传参数需要通过通过环境变量传递,如下:

set tch=wscript.createobject("wscript.shell")
args=tch.ExpandEnvironmentStrings("%keys%")
msgbox(args)

把这个写入到一个VBS文件中,如test.vbs,功能就是把传入的参数弹窗显示出来,通过DOS的调用方式如下:

set keys=Hello,Baby!
start test.vbs
当然VBS本身是可以自己运行的,不过如果没有参数是没有实际意义的。

知道了VBS的使用,那么写一个简单的替换方法那就是很简单的事情了,如下replace.vbs:

Dim Fso,Temp,File_Temp,File_Open,File_List,Folder_Name
Dim fileName,sourceString,newString
Set Fso = CreateObject("ScriptIng.FileSystemObject")
Set tch=wscript.createobject("wscript.shell")
fileName=tch.ExpandEnvironmentStrings("%fileName%")
sourceString=tch.ExpandEnvironmentStrings("%sourceString%")
newString=tch.ExpandEnvironmentStrings("%newString%")
sourceString=Replace(sourceString,"@","=")
newString=Replace(newString,"@","=")

Set File_Open = Fso.OpenTextFile(fileName,1)
File_Temp = File_Open.readall
File_Open.Close
File_Temp = Replace(File_Temp,sourceString,newString)
Set File_Open = Fso.OpenTextFile(fileName,2)
File_Open.WriteLIne File_Temp
File_Open.Close

通过replaceContent.bat封装:

@echo off  

set fileName=%1
set sourceString=%2
set newString=%3

start replace.vbs

调用实列:

cmd /c replaceContent testFile.txt AAA BBB

不过在调用的使用偶尔会报权限不允许,再次运行就不会有问题。

本文出自:冯立彬的博客




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值