欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

VBS批量重命名文件并且操作前备份原有文件

程序员文章站 2022-03-02 08:28:29
核心函数 '========================================================================== ' '...

核心函数

'==========================================================================
'
' vbscript source file -- created with sapien technologies primalscript 4.0
'
' name: 
'
' author: microsoft , microsoft
' date : 2014/7/9
'
' comment: '批量修改文件夹下对应的所有文件名
'
'==========================================================================
'选择我的电脑作为根目录,来选择目录
const my_computer = &h11&
const window_handle = 0
const options = 0
set objshell = createobject("shell.application")
set objfolder = objshell.namespace(my_computer)
set objfolderitem = objfolder.self
strpath = objfolderitem.path
set objshell = createobject("shell.application")
set objfolder = objshell.browseforfolder _
(window_handle, "select a folder:", options, strpath)
if objfolder is nothing then
wscript.quit
end if
set objfolderitem = objfolder.self
objpath = objfolderitem.path
'msgbox objfolderitem.name
'===================================================================
'选择指定盘符下的目录
' const window_handle = 0
' const options = 0
' 
' set objshell = createobject("shell.application")
' set objfolder = objshell.browseforfolder _
' (window_handle, "select a folder:", options, "c:\")
' 
' if objfolder is nothing then
' wscript.quit
' end if
' 
' set objfolderitem = objfolder.self
' objpath = objfolderitem.path
' 
' msgbox objpath
'=========================================================================
'定义变量
dim file_path,prefix_name,suffix_name,repeat_name,repeat_edit
dim oneline,twoline,threeline,fourline,fiveline
i=0
test = createobject("scripting.filesystemobject").getfile(wscript.scriptfullname).parentfolder.path
'wscript.echo test
filepath=test&"\config.ini"
'wscript.echo filepath
' file_path = "c:\users\administrator\desktop\1\music"'目标文件夹的路径
dst_file_path="c:\"&objfolderitem.name&"_bak"
file_path=objpath
'-----得到文件夹路径,且打开配置文件
set fso = createobject("scripting.filesystemobject") 
set folder = fso.getfolder(file_path) 
set fs = folder.files
set file=fso.opentextfile(filepath,1)
'----------------在操作前,备份一下原有的文件
fso.copyfolder file_path,dst_file_path,true
'----------------------------------
'取出第一行中的两个数
oneline=file.readline
onelinestr=split(oneline,"=")
onelinecount=ubound(split(oneline,"="))
for i1=0 to onelinecount
'wscript.echo onelinestr(i1)
next 
'-------------------------------------
'取出第二行中的两个数
twoline=file.readline
twolinestr=split(twoline,"=")
twolinecount=ubound(split(twoline,"="))
for i2=0 to twolinecount
'wscript.echo twolinestr(i2)
next 
'-------------------------------------------
'取出第三行中的两个数
threeline=file.readline
threelinestr=split(threeline,"=")
threelinecount=ubound(split(threeline,"="))
for i3=0 to threelinecount
'wscript.echo threelinestr(i3)
next 
'-------------------------------------------
'取出第四行中的两个数
fourline=file.readline
fourlinestr=split(fourline,"=")
fourlinecount=ubound(split(fourline,"="))
for i4=0 to fourlinecount
'wscript.echo fourlinestr(i4)
next
'-----------------------------------------
'取出第五行中的两个数
fiveline=file.readline
fivelinestr=split(fiveline,"=")
fivelinecount=ubound(split(fiveline,"="))
for i5=0 to fivelinecount
'wscript.echo fivelinestr(i5)
next 
'---------------------------------------------
'调用过程
'function_main()
function function_main()
if onelinestr(1)="true" then
function_prefix_name()
elseif onelinestr(1)="false" then
function_suffix_name()
elseif onelinestr(1)="number" then	
function_number_value()
elseif onelinestr(1)="array" then	
function_myarrayrename()
elseif onelinestr(1)="" then
wscript.quit
end if
end function 
'-----------------------------------------
'在原有名称前增加前缀
function function_prefix_name()
for each file in fs
file.name=twolinestr(1)&file.name
next
end function
'--------------------------------------
'在原有名称前增加后缀
function function_suffix_name()
for each file in fs
name=mid(file.name,1,instrrev(file.name,".")-1) '取到.号前面的文件名
format=mid(file.name,instrrev(file.name,".")) '取到.号后面的后缀格式
file.name=name&threelinestr(1)&format
next
end function
'--------------------------------------------
'在原有名称前增加有序自增数字
function function_number_value()
for each file in fs
fourlinestr(1)=fourlinestr(1)+1
file.name=fourlinestr(1)&file.name
next
end function 
'function_suffix_name()
'--------------------------------------------------
'批量更改文件名称
function function_myarrayrename()
const beforalarm="发生犯人暴狱,请注意观察"
const afteralarm="发生犯人暴狱,各小组按预案处置"
dim myarray(12)
n=1
y=0
for i=0 to 12
if i=11 then 
myarray(i)="监门哨"
elseif i=12 then 
myarray(i)="自卫哨"
else 
myarray(i)=n&"号哨"
n=n+1
end if 
' wscript.echo myarray(i)
next 
for each file in fs
format=mid(file.name,instrrev(file.name,".")) 
'msgbox format
'msgbox myarray(y)
if fivelinestr(1)="before" then 
file.name=myarray(y)&beforalarm&format
elseif fivelinestr(1)="after" then 
file.name=myarray(y)&afteralarm&format
else 
msgbox "请先设置是确认前还是确认后!",,"提示"
wscript.quit
end if 
y=y+1
'wscript.echo file.name
next
end function
 
'=======================================================================
' if prefix_name <> "" then'批量加前缀
' for each f in fs
' f.name = prefix_name&f.name
' next
' end if
' 
' if suffix_name <> "" then'批量加后缀
' for each f in fs
' name = mid(f.name,1,instrrev(f.name,".")-1)
' format = mid(f.name,instrrev(f.name,"."))
' f.name = name & suffix_name & format
' next
' end if
' 
' if repeat_name <> "" then'批量删除相同字符
' for each f in fs
' on error resume next 
' f.name = replace(f.name,repeat_name,repeat_edit)
' next
' end if
' '-----文件操作结束
' 
' set fso = nothing'释放内存
' 
' msgbox("完成!")

需用用到配置文件

config.ini文件内容:
statue=
prefix_name=[320kbp]
suffix_name=[结束]
i=20140100
array=

参数配置使用方法:

statue=true时为增加前缀
statue=false时为增加后缀
statue=number 时为增加有序自增数字。
statue=array 为调用数组函数
statue=空值时为空,不作处理,退出脚本操作。
array=before时,设置为确认前。
array=after时,设置为确认后。
array=空时,弹出提示信息,退出脚本操作。

好了这篇文章就介绍到这了,主要用到了filesystemobject与mid函数