马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):# n# E' z7 g) T# U0 J- e(欢迎访问老王论坛:laowang.vip)
2 [( `6 ^5 j; `7 r3 T; ~2 s. U
1 ~2 @0 x3 L( c1 I" R6 g! [' 修改文件后缀名.vbs! G; x) _) b U* e(欢迎访问老王论坛:laowang.vip)
'
7 I- z3 ^" f2 E8 a5 d" y1 X; s" g' 功能说明:
. _. d6 s* J# q' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 ! J) Y( ]5 O2 m- y* f9 ~: q `4 S2 G% n(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。# h( v3 P6 ~. h0 ~(欢迎访问老王论坛:laowang.vip)
'- o, X1 L7 L; t& P(欢迎访问老王论坛:laowang.vip)
' 使用说明:# [' C) H1 D; E; [7 R(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
1 z5 [& g, C) H7 Z7 U# W' 2. 双击运行脚本或通过命令行运行。
3 q) J8 |% n) z1 l' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
; r; b3 a! ~7 T9 v3 Y' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
6 W. A" q3 o# P) x- w+ U' w" ?' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
7 J) w! e% R5 e" Y4 d' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
: p. V2 d$ ~/ F" b$ M! K; z s0 A* @' a t- v7 e1 I5 h(欢迎访问老王论坛:laowang.vip)
Option Explicit/ R) X. A8 S4 E1 k" J(欢迎访问老王论坛:laowang.vip)
2 i, m* ~( P4 u. z! ?(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
: N& n7 d: D( l7 X9 l2 EDim folderPath
/ |1 y0 j( l2 ]folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
& y1 c# G1 F8 s8 |1 l- ^& P7 W! |, D% m3 U7 g(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)* M; {$ l0 ]6 M% x& J6 s& y j# E* O, X(欢迎访问老王论坛:laowang.vip)
Dim newExtension4 h+ @( Y- s* F: J% U# [5 x) Z(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名") S$ ?# e) k9 |9 h: k(欢迎访问老王论坛:laowang.vip)
. \1 w. p+ f3 Y0 h(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本
3 C7 L8 ~7 b9 aIf newExtension = "" Then5 g2 k4 g$ s& r# h f(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"1 H6 l, m) f# O(欢迎访问老王论坛:laowang.vip)
WScript.Quit0 A, A" Y. c s. j% Y(欢迎访问老王论坛:laowang.vip)
End If! l3 r; X7 x9 X! o5 O(欢迎访问老王论坛:laowang.vip)
( u; i- Y% L! l# t' w9 m' 确保新的后缀名不包含点(.)
# d/ ~+ n5 I) s% |1 [2 M2 l, EIf InStr(newExtension, ".") > 0 Then0 j% B0 i, P. t% X5 e' l(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"! ^. |2 S+ ^5 E* }' |(欢迎访问老王论坛:laowang.vip)
WScript.Quit
" ]& U2 x [/ LEnd If
1 D5 F. q0 ?; O3 X
" [) O3 g& b: q7 n+ e6 n& n' 创建 FileSystemObject 对象
. m4 v8 X* f& e: T! ]6 RDim fso, folder, subFolder. _4 ?5 Z- d8 G7 w( o% h6 g s(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")
8 L! B/ j8 q4 N* A4 i& B ^' p% ^0 N( g( L* {(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象1 g& O9 e \. P7 s. y: H! S) J(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)! b! s& W% }6 \% @5 }0 g(欢迎访问老王论坛:laowang.vip)
! ], a1 @0 Y! j( m- K8 {; R" X' 检查当前目录是否包含子目录( ?" O& t( {$ z. ]9 K(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders
: l; Y9 B& }, b3 G5 z( [" xhasSubFolders = folder.SubFolders.Count > 0
3 i7 X- |' {! i7 ^6 H& d
0 a& x3 i: a6 Y6 q5 V0 t' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
* ?" V1 e5 ~7 L! ^! m. `. yDim modifySubFolders
8 P, e# D! x( u. D6 J% x2 M5 AIf hasSubFolders Then; F" `- d, N% o' }& H1 f(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
0 A$ x0 N. M3 a8 x) o' \8 KEnd If
1 k8 o$ Q4 @" ~4 q: S- i
& e/ L3 i# \5 f" m' 处理当前目录中的所有文件
' }8 M* Y+ t- L4 dCall ProcessFiles(folder, newExtension)/ E5 o7 m, J2 w/ J( t+ e(欢迎访问老王论坛:laowang.vip)
& Z+ q9 j6 c' ]' G(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件2 b9 A7 n0 [# h6 W5 G8 ^(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then
4 {. r4 s$ o$ j& u$ e7 ` For Each subFolder In folder.SubFolders
: k2 ]8 ^* C) o& u- q% ~ Call ProcessFiles(subFolder, newExtension)
7 P% C% z% c$ o/ Z Next
3 ?8 |# d8 y6 `4 Z) yEnd If: |8 g C, @/ P! g(欢迎访问老王论坛:laowang.vip)
. g8 n8 v) Q, [+ ?(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成
$ ~# ]+ ~! S2 [7 ?5 Z7 E8 iMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
$ H. w9 G* S1 `# p. O+ E
" h! E: `; k: q* g5 f, N7 ?, T' 处理指定目录中的文件的子程序
3 {8 F# l- U# ?% HSub ProcessFiles(targetFolder, newExtension)
3 k6 [ v. B! Z- }0 _4 G6 j1 ]8 l" q& l Dim file, oldName, baseName, currentExtension, newName, newFileName, counter" k" n8 d# R2 t(欢迎访问老王论坛:laowang.vip)
Dim nameDict [& E) S; J; W4 r* L- {8 F' _(欢迎访问老王论坛:laowang.vip)
" m O, D) X" p5 a9 k$ V: Z(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名$ s+ U7 m" p6 c(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")
7 T# h6 m0 m% Y& m2 T7 J/ ~+ X; j3 s: i( x5 W h' I(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件
6 g9 U6 ?4 r% ^3 q For Each file In targetFolder.Files
- M, s" j' S$ \3 o ' 跳过后缀名为 .vbs 的文件
; w3 X8 ~0 m$ [) Z" m Z$ k: P If LCase(fso.GetExtensionName(file)) <> "vbs" Then" }( [( y; p5 W/ _(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名 ]* K8 m' e+ M* ~(欢迎访问老王论坛:laowang.vip)
oldName = file.Name
% Z4 Q @/ i! v* ]2 P: K6 P baseName = fso.GetBaseName(file) s3 @2 h/ i4 ]: @(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))# W9 B$ F* V' V+ w+ ~(欢迎访问老王论坛:laowang.vip)
, a" f6 x( U" }! D# L- j ' 如果当前后缀名与新后缀名不同,则进行重命名) M) E+ q u8 q+ n" Q(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then
2 e6 J) ~# j& X' p9 \- O( n: O ' 创建新的文件名& E) S/ T# D1 N+ \" e2 I1 a0 n2 E(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension
8 \+ z8 |5 H. m) x1 X( I" h$ e& u4 x(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名) y4 P* T4 E9 M# U(欢迎访问老王论坛:laowang.vip)
newFileName = newName$ B+ q I, K2 k6 d(欢迎访问老王论坛:laowang.vip)
counter = 1& S% F6 L2 B- }' _/ A( `+ l(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一
/ ^1 h& }& k( p0 d' V While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)+ [) |9 w% t) C4 I+ ^3 p, @5 p" c(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension
% M3 d9 n5 c, A H" _; f' Q! {7 K counter = counter + 1
8 M1 V( K0 \4 j9 ?# C Wend. T! j, n/ R J" b7 v. c8 w(欢迎访问老王论坛:laowang.vip)
/ A( H4 h8 R" [* _(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名2 @3 x8 P3 h0 P2 E5 L(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True
: L5 T3 ^5 |6 V0 Q' y, f
! i6 f1 v" P/ e; P0 |. v! r& @ ' 重命名文件
4 c# G# n4 J/ r2 s2 ? file.Name = newFileName
& H6 |8 e/ |9 i6 p8 P( ^: g End If
5 e# ^9 a. F, [3 | End If
" N5 I0 I; C: Y) X1 y2 E, R Next
& X2 x# o+ d2 i. F& G/ TEnd Sub$ A$ s& I' r w, H4 ]$ E- K(欢迎访问老王论坛:laowang.vip)
1 G# E+ U( H9 {; }, U F(欢迎访问老王论坛:laowang.vip)
, F2 }' |$ W* d5 S2 u3 M# l$ M1 [9 S& ?( n9 P" ~(欢迎访问老王论坛:laowang.vip)
|