如何用VBS重命名文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用VBS重命名文件相关的知识,希望对你有一定的参考价值。

某目录下有几十上百个文件,他们的名字里都有“-”字符,如《xxx-yyy.ext》。现我要把“-”及其之前的字符全部删掉,如《xxx-yyy.ext》变成《yyy.ext》。请问该如何实现?
我的想法是:1,复制一个文件名到字符串;2,找到“-”在该字符串里的位置,如在《xxx-yyy.ext》中是第四个;3,把字符串里第一到第四个字符都删除;4,用新的字符串重命名原文件。但是我刚接触VBS,都不知道用什么语句。望解答
对了,每个文件名里"-"字符前面的也都是不一样的。

这个问题非常简单,暂时没有电脑,你把我这个代码拿去修改一下就可以用了,非常简单

http://wapiknow.baidu.com/question/575575001.html?fr=index_nav&uid=AA7C6D076014183CFB37E7D62E761DBB&pu=sz%401320_240%2Cos%40android&bd_page_type=1&init=iphone&step=2

把修改文件内容删掉换成修改文件名,把分配字符那一段代码稍微改一下要处理特定的字符就行了。注意别忘了把mmmm改成-。实在不会找个高手帮你改一改这个代码也行。只需改2~3处位置就行了追答

批处理虽然简单,但vbs的效率是批处理的几百倍

还是给你重新写一个吧,用手机写的,记得加分~

set fso=createobject("scripting.filesystemobject")
filepath="." '点代表当前文件夹,你自己也可以修改为绝对路径
findstr="-"'要搜索的字符
spt=1 '这里的1代表截取匹配字符
后面的全部字符,0代表截取前面
for each i in fso.getfolder(filepath).files
path=mid(i.path,instrrev(i.path,"\"))'分配路径
file=left(i.path,instrrev(i.path,"\") 1)'分配文件
sp=split(file,findstr)
if ubound(sp)=0 then msgbox "没有找到 "&file&" 中于 "&findstr&" 匹配的字符",64,wscript.scriptname:quit
fso.filemove path&"\"&file,path&"\"&sp(spt)
next
quit
sub quit
set fso=nothing
wscript.quit
end sub
我不清楚对不对有些代码很久没写了,不对的话等我上电脑才能知道哪里有问题!

参考技术A 想问一下的是你是否一定要用vbs实现?对这种简单处理,用批处理就可以很快实现的。

如何重命名文件并覆盖 VBS 中的现有文件?

【中文标题】如何重命名文件并覆盖 VBS 中的现有文件?【英文标题】:How to rename a file and overwrite existing in VBS? 【发布时间】:2020-06-02 19:51:51 【问题描述】:

我已经有一个现有的 vbs 脚本,用于从一个位置获取一个文件(标题为“Running_12345.xlsx”)并将其放入标题为“文件夹”的文件夹中。这是一个每小时文件,其名称根据运行时间而定。

现在,我想将文件重命名为“Running.xlsx”以删除不断变化的文件名。最初,此代码有效,但对于任何后续出现,它都会失败,因为“Running.xlsx”文件已经重命名过一次并且现在已经存在。如何向此代码添加覆盖逻辑:

dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

set oFldr = fso.getfolder("folder")

for each ofile in oFldr.Files
 if lcase(fso.GetExtensionName(ofile.Name)) = "xlsx" then
  ofile.name = "Running.xlsx"
  Exit for
 end if
Next

【问题讨论】:

也许你有几个 xlsx 文件和一个已经命名为 Running.xlsx 【参考方案1】:

呃,先删除文件。下面的代码做我想要的:

dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

set oFldr = fso.getfolder("C:\Users\brad.ohara\Desktop\MosaicTransforms\")

fso.DeleteFile("C:\Users\brad.ohara\Desktop\MosaicTransforms\MosaicFile.xlsx")



for each ofile in oFldr.Files
 if lcase(fso.GetExtensionName(ofile.Name)) = "xlsx" then
  ofile.name = "MosaicFile.xlsx"
  Exit for
 end if
Next

【讨论】:

以上是关于如何用VBS重命名文件的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言重命名

如何用Matlab为文件批量重命名

如何用c语言进行文件的批量重命名

VBS 重命名一个文件夹内的全部文件

vbs拷贝指定文件并重命名

如何重命名文件并覆盖 VBS 中的现有文件?