马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
) P+ }. t! \6 v
( p7 }6 X. \, s# ^5 W' C% q) T* q% a0 l; r1 b7 d# \(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs
2 Q L; o2 f* Q* H'
) P* m6 }2 ?" w% Z4 _6 O* Z' 功能说明:
( C0 `- B, s. G: Z9 J6 |' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
1 A P1 \, N* v# _' r) [* I. _) ?' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。
3 j& P, n6 g- j'& C4 @# Q% q6 [. b1 e(欢迎访问老王论坛:laowang.vip)
' 使用说明:
2 }7 ]+ g9 S$ S2 S6 K9 r7 c t' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
4 U, R o: L9 j, n2 C1 q) v1 i, D" B* S' 2. 双击运行脚本或通过命令行运行。
7 _* ~- e$ m+ O' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。2 g0 L0 h4 ^# Q8 R1 g$ E(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
9 s$ h. u9 g+ s! K- Q3 j' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。 j/ O1 P4 q! J- o% `, _6 J(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。! j4 z0 L. _7 c& D(欢迎访问老王论坛:laowang.vip)
* j* B7 m/ Q; F+ c& {(欢迎访问老王论坛:laowang.vip)
Option Explicit
4 d4 w& g# F0 B4 d+ o4 i
7 m2 ~6 A1 E! o- s( s4 \* j' 获取当前目录的路径
1 h7 h5 s" t% J2 A) {Dim folderPath) N* D7 A3 s+ C. L" I(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")( D& j; B5 Z$ c0 L(欢迎访问老王论坛:laowang.vip)
: g& ^- T/ [+ Y8 I7 u* }+ N( M, ^(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)6 b- s( ], a& b/ N5 e(欢迎访问老王论坛:laowang.vip)
Dim newExtension7 \' t P4 `9 i2 M+ T2 \' t! D(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
$ k; O6 N& Y+ S. O$ D
% R4 f6 k5 D R/ r1 [* |! B' 如果用户取消了输入框,则退出脚本
+ s7 G9 p+ T; k& zIf newExtension = "" Then8 p( v9 o1 O) i(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
& h* Q$ b7 _( ?0 W* F- x8 X WScript.Quit
$ L4 K: U5 P0 n4 x# z5 cEnd If/ L* a' T+ k q! l, l(欢迎访问老王论坛:laowang.vip)
, N- ?5 Y1 Y) X+ R! ~% e(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)
C* V6 L0 G6 s/ j- M6 XIf InStr(newExtension, ".") > 0 Then
7 s' ~9 Z3 c3 E' A) ^: X* [6 p# b MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"" ], u) Y0 f! `) k" B9 G9 M(欢迎访问老王论坛:laowang.vip)
WScript.Quit
5 m8 D( B: x2 @! F2 {7 B4 s* SEnd If
5 o; O- y2 V9 z: _( j+ i& E+ J0 G& R A3 a+ ]/ K! v(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象
1 X* }8 k2 S6 u! Y6 Z0 V5 A2 ADim fso, folder, subFolder+ E5 t& s0 i8 }: \! R(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")- P. L5 T8 {3 V# T$ G& w& i(欢迎访问老王论坛:laowang.vip)
2 i. T3 n& A5 T(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
* T% E5 n9 X( m" RSet folder = fso.GetFolder(folderPath)
' E# X4 |* L. n2 o5 J6 c
$ H' \2 A( b/ H! K K' 检查当前目录是否包含子目录) _6 T( t9 s5 m6 R- N(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders4 y! T# t* g0 ~( [7 V3 k1 f* w. F(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0
Y2 E) }9 Q. E* \3 h
) N0 \5 h4 \$ ]' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件3 Y, |# ~$ a5 c' R(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders
# O4 o( L0 ?# t! pIf hasSubFolders Then
, h6 j$ \% m, p) { o modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
( t e- H) p% w' y5 y$ qEnd If/ ]1 r+ v+ E& A0 T( V8 w(欢迎访问老王论坛:laowang.vip)
$ B% ~) v& {! K& V$ {' A' [' 处理当前目录中的所有文件& Y1 {9 q) o4 l' z0 {(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)
+ p. O9 s: v" G; e
; a5 t0 s9 X/ x, S! o+ k' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件8 p8 W9 M7 m1 }. _9 H( R(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then
/ [) W2 c3 d) h+ W k7 B( x For Each subFolder In folder.SubFolders2 a* R2 F- g, N( q6 t(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension); n+ t5 {3 E$ U# U% v \# X(欢迎访问老王论坛:laowang.vip)
Next- T* D1 O9 c0 b(欢迎访问老王论坛:laowang.vip)
End If
& N* ^ u t+ [* ` M- N) X
" X& P& L/ B( y" m' E/ ~4 E' 提示用户操作完成
) t7 B) }9 y: g7 U4 B3 uMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
" ~+ d U" M9 t1 k }" \! \; O/ O
1 n' Q( M$ U, ]& y5 W9 U' 处理指定目录中的文件的子程序 R9 w5 c2 P, u3 s$ \# O5 B(欢迎访问老王论坛:laowang.vip)
Sub ProcessFiles(targetFolder, newExtension)0 h! L+ m8 s/ m" `2 p(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter" }, P, S2 n( W( m- i(欢迎访问老王论坛:laowang.vip)
Dim nameDict
x9 T5 A/ T9 \- u) D) O
n! o* `* m7 x8 z ' 创建一个字典对象,用于存储当前目录内的文件名' k6 G7 l! Q! E$ H( s7 l(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary"). A& m- Z6 n4 A2 f( o8 f(欢迎访问老王论坛:laowang.vip)
9 K/ Z2 c; l$ y8 s& _ ' 遍历指定目录下的所有文件+ p" _2 G* B3 {/ E4 i(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files$ v% a7 E: U+ Z! G- n(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
- C% ^! R6 a- p) r If LCase(fso.GetExtensionName(file)) <> "vbs" Then2 i0 X, z- }8 g/ h t& J' c(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名) Y4 y2 T5 Z( H; ^$ ^(欢迎访问老王论坛:laowang.vip)
oldName = file.Name
* d. J8 U+ c5 b; b Z baseName = fso.GetBaseName(file)( A$ x+ w8 }* |) K- w# P(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))
( Q: C+ ]8 h1 O
- m, Z+ N3 h" w3 L+ C" W: B ' 如果当前后缀名与新后缀名不同,则进行重命名$ Z" Z* I3 S' o9 k* p(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then
$ Q3 h2 Y6 m6 p ' 创建新的文件名7 b* Q. z9 P Z- n(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension6 w3 \* h: I1 F3 A7 {$ ]8 z, t2 T(欢迎访问老王论坛:laowang.vip)
! E* y- q5 W5 j+ Z9 k! L+ H6 E(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名. {% N0 S( l G& ?- L(欢迎访问老王论坛:laowang.vip)
newFileName = newName$ S$ M/ i) @$ ^, D& U. j; L(欢迎访问老王论坛:laowang.vip)
counter = 1
$ D7 }; N3 G( Y# L/ q8 y+ v) v ' 确保新的文件名唯一) x4 O3 K) x) N$ r# x9 A% D. C(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)9 h) x7 _$ z* m; F; N(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension% b( K' ?) w2 \9 P h+ r(欢迎访问老王论坛:laowang.vip)
counter = counter + 1+ ^# ?# ]/ N8 j(欢迎访问老王论坛:laowang.vip)
Wend
$ S. [7 t, _! ~! c. H! r7 w7 ^( S9 |3 m# k(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名, i) e+ k6 E$ N6 m4 m( G2 u(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True
% y. T- M1 _1 V
5 k& h; L! b: v: B+ h6 J ' 重命名文件$ ]1 C( `2 k: f7 u* d Y9 ?0 z j(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName
1 ?- v+ f9 e8 [ End If7 o( w; c) L9 O( B3 K- I6 L(欢迎访问老王论坛:laowang.vip)
End If. `# e8 T2 Y5 o# |9 `(欢迎访问老王论坛:laowang.vip)
Next6 e/ s3 I& I% a- u; l! Y3 A! A9 \9 P(欢迎访问老王论坛:laowang.vip)
End Sub
* [ M4 W: ~, X% ^; @; P- x/ X8 _! _. x( ? u4 I* M(欢迎访问老王论坛:laowang.vip)
; j( t8 m8 N7 E3 [; D, o6 s' _/ D3 l/ Q! N7 z9 q, T9 a(欢迎访问老王论坛:laowang.vip)
|