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

Posted

tags:

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

请问如何右击一个文件夹弹出“顺序重命名所有文件” 然后调用一个VBS文件的功能把此文件夹内的所有文件按照数字顺序从到高重命名。
比如一个文件夹内有很多数码相机拍的图片,文件名是很长的字母数字组合,我想把它们改为1.jpg、2.jpg、3.jpg、4.jpg……的形式

难点有两个:一个是如何让用邮件菜单调用VBS文件(估计要配合注册表了)。第二个就是vbs的写法。

请各位高手指点一下思路,不用把代码都写出来,写出核心的代码就可以了,谢谢。

set fso=createobject("scripting.filesystemobject")
set folder=fso.getfolder("c:\photos") 'c:\photos改成文件夹的路径
set files=folder.files
for each file in files
num=0
do
ext=fso.getExtensionName(file)
if not fso.fileexists(folder&"\"&num&"."&ext) then
file.name=num&"."&ext
exit do
else
num=num+1
end if
loop
next
参考技术A 没用过。

如何快速重命名文件夹中的一堆文件

【中文标题】如何快速重命名文件夹中的一堆文件【英文标题】:How to quickly rename a bunch of files in the folder 【发布时间】:2011-01-10 12:59:59 【问题描述】:

我有一堆名为“something_12345.doc”的文件(任何 5 位数字,不一定是 12345)。我需要将它们全部重命名为“something.doc”。这是一个 Unix 文件系统,我怀疑有一种方法可以只用一个命令来做到这一点......任何 Unix 正则表达式专家可以帮忙吗?

谢谢!

【问题讨论】:

你将只剩下一个文件,基本上,你正在删除 N-1 个文件并将第 N 个文件复制到 something.doc -- 这是你想要的吗? -1 因为被问经常。您应该先搜索 SO。 【参考方案1】:

在 FreeBSD 上,您可能对 sysutils/renameutils 端口感兴趣。命令qmv 打开您的$EDITOR 并允许您在一个相当舒适的环境中指定所有文件重命名。我个人更喜欢qmv -fdo(单列)格式。

【讨论】:

【参考方案2】:

使用 sed

ls *.doc | sed 's:\([^0-9_]\)[0-9_][0-9_]*\.doc:$(mv & \1.doc)' | /bin/bash

【讨论】:

【参考方案3】:

这个问题在 SO 上被问了 很多 次:

bash script to rename all files in a directory? bash Linux - Massive folder rename How to do a mass rename? https://***.com/questions/7137/replacing-one-string-in-a-bunch-of-file-names-with-another

我的个人偏好是mmv。但请参阅“Mass Rename/copy/link Tools”。

【讨论】:

【参考方案4】:

@OP,shell 已经为您扩展了您的模式,在您的 mv 语句中,您不必再次指定 5 位数字的模式。

for file in *_[0-9][0-9][0-9][0-9][0-9].doc
do
  echo mv "$file" "$file%_*.doc"
done

【讨论】:

感谢 ghostdog74 和其他所有人!【参考方案5】:

rename 's/_[0-9][0-9][0-9][0-9][0-9]//' *.doc

【讨论】:

我在 FreeBSD 上,所以这不起作用.. bash: /usr/local/bin/rename: Argument list too long 我不知道如何设置重命名变量 想通了。对于 [A-Za-z]*_[0-9][0-9][0-9][0-9][0-9].doc 中的 i做 mv "$i" "$i/_[0-9][0-9][0-9][0-9][0-9]";完成【参考方案6】:

是的,rename 采用 perl 风格的正则表达式。做一个man rename

【讨论】:

并非总是如此。在 RH 系统上,它会进行简单的字符串替换。

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

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

vbs拷贝指定文件并重命名

求BAT或者VBS脚本,批量重命名一个文件夹下面的文件为0001 、0002、0003、0004、0005、依次等等

VBS 关于提取WORD第二行的文字为文件名的方式

sh 在子目录中重命名文件内的字符串

搜狗输入法文件重命名说在另一个文件打开改不了