首页 > 编程 > VBScript > 正文

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

2020-06-26 18:27:59
字体:
来源:转载
供稿:网友
使用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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表