找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14803|回复: 0

[原创] VBS实现文件夹/文件补0重命名

[复制链接]
发表于 2019-4-23 19:10:07 | 显示全部楼层 |阅读模式
隔壁发去重复,我也来水一贴,
会给目录下的所有文件名/文件夹名中出现的第一个数字补0。
用法:存vbs,要处理的文件/文件夹的父目录拖上去。
文件补0重命名.vbs
  1. Rem Code by OldLiu
  2. Option Explicit
  3. Dim fso,Files
  4. Set fso = CreateObject("Scripting.FileSystemObject")
  5. If wsh.Arguments.Count <> 1 Then wsh.Quit
  6. Set Files = fso.GetFolder(wsh.Arguments(0)).Files

  7. Dim regex
  8. Set regex = New RegExp
  9. regex.Global = False
  10. regex.Pattern = "\D*(\d+)"

  11. Rem 得到最大索引
  12. Dim File,lngMaxIndex,strMatch
  13. lngMaxIndex = 0
  14. For Each File In Files
  15.         For Each strMatch In regex.Execute(File.Name)
  16.                 If CLng(strMatch.Submatches(0)) > lngMaxIndex Then
  17.                         lngMaxIndex = CLng(strMatch.Submatches(0))
  18.                 End If
  19.         Next
  20. Next
  21. If lngMaxIndex = 0 Then wsh.Quit 1

  22. Rem 计算最大补0数目
  23. Dim bytMaxZeroAdd
  24. bytMaxZeroAdd = Len(CStr(lngMaxIndex))

  25. Rem 重命名处理
  26. regex.Pattern = "(\D*)(\d+)(.*)"
  27. For Each File In Files
  28.         For Each strMatch In regex.Execute(File.Name)
  29.                 File.Move _
  30.                         File.ParentFolder&""& _
  31.                         strMatch.Submatches(0) & _
  32.                         String(bytMaxZeroAdd - Len(CStr(CLng(strMatch.Submatches(1)))),"0") & _
  33.                         CStr(CLng(strMatch.Submatches(1))) & _
  34.                         strMatch.Submatches(2)
  35.         Next
  36. Next
复制代码
文件夹补0重命名.vbs
  1. Rem Code by OldLiu
  2. Option Explicit
  3. Dim fso,Folders
  4. Set fso = CreateObject("Scripting.FileSystemObject")
  5. If wsh.Arguments.Count <> 1 Then wsh.Quit
  6. Set Folders = fso.GetFolder(wsh.Arguments(0)).SubFolders

  7. Dim regex
  8. Set regex = New RegExp
  9. regex.Global = False
  10. regex.Pattern = "\D*(\d+)"

  11. Rem 得到最大索引
  12. Dim Folder,lngMaxIndex,strMatch
  13. lngMaxIndex = 0
  14. For Each Folder In Folders
  15.         For Each strMatch In regex.Execute(Folder.Name)
  16.                 If CLng(strMatch.Submatches(0)) > lngMaxIndex Then
  17.                         lngMaxIndex = CLng(strMatch.Submatches(0))
  18.                 End If
  19.         Next
  20. Next
  21. If lngMaxIndex = 0 Then wsh.Quit 1

  22. Rem 计算最大补0数目
  23. Dim bytMaxZeroAdd
  24. bytMaxZeroAdd = Len(CStr(lngMaxIndex))

  25. Rem 重命名处理
  26. regex.Pattern = "(\D*)(\d+)(.*)"
  27. For Each Folder In Folders
  28.         For Each strMatch In regex.Execute(Folder.Name)
  29.                 Folder.Move _
  30.                         Folder.ParentFolder&""& _
  31.                         strMatch.Submatches(0) & _
  32.                         String(bytMaxZeroAdd - Len(CStr(CLng(strMatch.Submatches(1)))),"0") & _
  33.                         CStr(CLng(strMatch.Submatches(1))) & _
  34.                         strMatch.Submatches(2)
  35.         Next
  36. Next
复制代码

评分

参与人数 2技术 +2 收起 理由
Batcher + 1 感谢分享
xczxczxcz + 1 vbs+

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 20:42 , Processed in 0.011131 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表