vbs 批量修改文件,bat 批处理文件调用执行vbs,并在cmd窗口打印返回值(vbs运行结果)...

本文介绍如何使用VBS脚本批量替换指定目录下所有目标文件中的字符串,并统计被修改文件的数量。提供了完整的示例代码及批处理调用方法。

使用vbs 脚本对工作目录下的字符串进行替换并统计被修改的文件数
主调的批处理方法将捕捉该vbs脚本运行后的结果并打印在cmd窗口。
示例代码(t.vbs)如下:

Set fso=Wscript.CreateObject("Scripting.FileSystemObject")
flrName="D:\Workspace\src\"  'dir that you need deal with
count=0  'get the count of modified files
function Traversal(dir)
set flr=fso.getfolder(dir)
set fs=flr.files
findstr1="[assembly: SecurityTransparent]"  'find string that need to be replaced
findstr2=replace(findstr1," ","")   'becasuse there is space char in findstr,so add this findstr2
replaceStr="[assembly: AllowPartiallyTrustedCallers()]"  'destination string in replace

  for each f in fs
     if lcase(f.name)="assemblyinfo.cs" then 
         set findf=fso.opentextfile(f)                 
         do while findf.atendofstream=false
         d=f.datelastmodified  'get modified datetime of current file         
         alltext=findf.readall 
                
          if(InStr(alltext,findstr1) > 0 ) then             
          s=replace(alltext,findstr1, replaceStr)
          count=count+1
          findf.close()
          'If no findstr2, delete the following elseif block
          elseif(InStr(alltext,findstr2) > 0) then           
          s=replace(alltext,findstr2, replaceStr)
          count=count+1
          findf.close()
         
          else
             findf.close()
             exit do
          end if
                              
          set r=fso.opentextfile(f, 2, true)
          r.write s

          d2=f.datelastmodified

          if d2>=d then exit do                
       loop     
     
    end if
  next

    set fs=flr.subfolders
    for each f in fs
        Traversal(f.path)
    next

end function

Traversal(flrName)
'msgbox ("Done!  "& count & " files were modified successfully.")
wscript.echo "Done!  "& count & " files were modified successfully."  'value popup by "wscript.echo" can be received by .bat easily
 
Wscript.quit count   'this variable "count" in order to get a return value by %ErrorLevel%

上面的操作只执行了处理文件的步骤
如果不需要提取运行结果,在批处理或主调vbs脚本里直接 运行该vbs文件就行了。

如果在bat 里调用该vbs脚本,并希望打印出提示信息
可以用下面的两种方法来实现:
1,在bat中加入如下代码

@echo off
for /f "delims=" %%a in ('cscript //nologo c:\t.vbs') do (
set ScriptOut=%%a)
echo Result: %ScriptOut% 

上面的 echo 打印字符串的格式自己根据需要定义,c:\t.vbs 文件目录修改为你的vbs文件目录。

2,bat 中加入

@echo off
cscript //nologo c:\t.vbs
echo -----Modify %ErrorLevel% "AssemblyInfo.cs" files successfully.-----

上面echo 文本格式根据自己的需要定义 %ErrorLevel% 用来获取 上面示例vbs文件结尾 count的值,同样需要修改vbs文件的目录 c:\t.vbs

 

转载于:https://www.cnblogs.com/wtao/archive/2011/09/16/2178760.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值