马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):3 o2 e) J5 w" Z; [(欢迎访问老王论坛:laowang.vip)
( y; X9 M0 \! c+ W- ~& j1 L* f+ d6 {5 r% s(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs
( }! ]9 p/ H+ z$ I& ?'
4 i" j6 ?% q2 r2 c' 功能说明:
; O, t0 C- K$ n0 x" C7 A' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 5 e3 d# Y5 v6 _; z3 s(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。$ ~/ _& ]7 A5 x8 A(欢迎访问老王论坛:laowang.vip)
'9 u1 |$ |5 J' T% P(欢迎访问老王论坛:laowang.vip)
' 使用说明:- r% F8 m2 t4 j! u) r* h1 }3 L(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。0 W0 G* X N; M# C# n6 D(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。: R8 N4 E ^" w- C6 }/ `(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。4 Q5 t( }1 e& C& c(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。* V- l3 j& |& O, T7 o- c(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。: e% d& Q; D( I c, |(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
' Z& p. Z; t& i
- R7 V1 X( n& e" N: b' G4 h8 g) d) iOption Explicit0 P- {; a2 n# g(欢迎访问老王论坛:laowang.vip)
" }6 |) Q2 C7 E1 ?- O+ }$ a: C(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径7 m! r4 Y# M j- J& Y5 S' Z(欢迎访问老王论坛:laowang.vip)
Dim folderPath `1 `, u! J+ g& V9 d9 Y! A# B' y(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
- i2 ~' N3 A; G$ H' P) g8 M' p0 w' `(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)
G3 ]- ]8 z. G7 A6 B1 _8 JDim newExtension
8 `& X9 J/ k( znewExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")- E' z* |' W" p7 q0 |(欢迎访问老王论坛:laowang.vip)
- o" {6 ]% Y4 p$ E% f Q(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本
6 g: e% f# P' o4 S; BIf newExtension = "" Then- K8 x# U; v# d4 H4 a5 z t(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"0 G. \2 E" C" R2 E(欢迎访问老王论坛:laowang.vip)
WScript.Quit
. j x( T% A$ J9 E" XEnd If* ~! p, W; m# h- L(欢迎访问老王论坛:laowang.vip)
+ x0 {7 L6 Y& P% |+ Q' 确保新的后缀名不包含点(.): i9 k% s0 ?4 h1 D P(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then6 E. j3 C$ E; t1 n6 O/ W$ p3 R(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"9 R- G. e& K2 j0 K8 {+ ~7 ^(欢迎访问老王论坛:laowang.vip)
WScript.Quit
9 n) z* e/ u0 \8 F! i1 S9 MEnd If
; @( R/ p. \# {6 z' b% a+ s
5 e `+ h+ G- Q5 y, D' 创建 FileSystemObject 对象' H8 C# M9 [( M6 y$ x(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
2 ?+ P; U% m# D* FSet fso = CreateObject("Scripting.FileSystemObject")
* `' {- o. E* C9 T3 m$ i7 l* T f- t+ Z$ F2 |& @(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
9 L# Z) W; H2 ~# q% QSet folder = fso.GetFolder(folderPath)) T9 H0 ]' X) Y(欢迎访问老王论坛:laowang.vip)
! b+ x r. Z8 Y, K(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录* p$ G! g$ Q5 j(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders
. l* b5 y5 J. P5 S" i" ZhasSubFolders = folder.SubFolders.Count > 0
& u& v% n& M' U- {- E+ B1 D4 e# |7 o
7 s4 V3 N1 u0 B+ n! P! l' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
/ e; D W1 l' Q) Q& jDim modifySubFolders
* O' w) ?& C/ ]6 n6 WIf hasSubFolders Then. ?- n/ ]7 E$ y(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
4 Q+ A9 p+ V9 z+ ~; r, QEnd If
9 g8 k3 c: m5 E# I) h4 K4 ~' c
6 U: F, A2 B H! y7 y4 L4 N0 W+ _' 处理当前目录中的所有文件 X4 c0 f- B/ z& `; c(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)7 P( { [ x6 L(欢迎访问老王论坛:laowang.vip)
5 S$ v( y# u# p6 J e; }1 G(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
" p/ ?* B; Z; sIf hasSubFolders And modifySubFolders = vbYes Then; a/ `" j" A9 p% W; I- L(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders
$ T" b" V, n7 @9 R; L2 { Call ProcessFiles(subFolder, newExtension)
5 S1 P5 P5 g& D Next% _3 Z3 U/ B" k/ G7 `5 q(欢迎访问老王论坛:laowang.vip)
End If5 A# V( C& p* ?9 l y(欢迎访问老王论坛:laowang.vip)
: r. z" z- y( Y' F8 R/ l) m5 K(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成 C1 [- Z& G _(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成", z9 q- M. ^9 z(欢迎访问老王论坛:laowang.vip)
6 g9 d; A/ J' A& d) h, c(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
7 C, n8 I0 c1 A7 N6 s8 m+ B+ `Sub ProcessFiles(targetFolder, newExtension)1 E+ t" }, P$ s" I(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
5 E# g2 n0 }& N( Z+ J) |8 [7 n Dim nameDict% B- I7 v" R: C(欢迎访问老王论坛:laowang.vip)
0 K: O+ i/ D; A4 E(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名
6 G8 [) Y& n, b! O6 ^ Set nameDict = CreateObject("Scripting.Dictionary")( \" U0 q( K$ u( s3 [+ m(欢迎访问老王论坛:laowang.vip)
+ r: G$ o0 [( l0 M( O& \ ' 遍历指定目录下的所有文件
4 P- R! Z5 y w& ` For Each file In targetFolder.Files3 _& E) F1 K& d W% T2 m(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件$ {( c2 C/ M* X E- m( a(欢迎访问老王论坛:laowang.vip)
If LCase(fso.GetExtensionName(file)) <> "vbs" Then" P* m! r8 W; w! z! k% u5 A3 s- w' T6 W(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名
* L7 y5 K0 B7 F2 C; O oldName = file.Name
2 x9 u7 `5 M: u; l4 R1 ~ baseName = fso.GetBaseName(file)
* @/ k: V: ^$ |: [) y% W4 k; Y currentExtension = LCase(fso.GetExtensionName(file)): U$ g# j5 _ E3 G& [(欢迎访问老王论坛:laowang.vip)
, F1 k5 q2 l( C& g3 D/ U. g ' 如果当前后缀名与新后缀名不同,则进行重命名+ u' a* a% b" Q! ~0 b9 i q8 c(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then
+ T! Q6 q |$ R' L: A ' 创建新的文件名
0 n9 y8 R- `& m K5 G newName = baseName & "." & newExtension
( k% ]$ E9 S# F3 k, F6 C k- C* R) ]/ Z' w1 ~3 ^4 T6 c" _(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名6 `8 n x( p- ~/ X(欢迎访问老王论坛:laowang.vip)
newFileName = newName) b4 M9 P/ F% J' _* z6 h(欢迎访问老王论坛:laowang.vip)
counter = 1
8 {' @& i) {: Y4 V ' 确保新的文件名唯一
& H0 t6 J- d5 s6 g7 n( s While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
0 Y6 K( \6 S/ d, O: _0 V newFileName = baseName & "(" & counter & ")." & newExtension, f" u- ?2 Z$ W- x% E0 N(欢迎访问老王论坛:laowang.vip)
counter = counter + 1! _/ c7 e" T, F5 C j7 m+ O6 ^(欢迎访问老王论坛:laowang.vip)
Wend5 e- R) N3 O6 J L(欢迎访问老王论坛:laowang.vip)
* [( U& l7 M! ^% i7 [ ' 记录新的文件名6 R$ h* ~) h% h8 P& `: E(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True
3 w( `7 L2 }+ J: Y4 T9 \$ s5 o& T8 t! Z1 ^(欢迎访问老王论坛:laowang.vip)
' 重命名文件
9 L* ~/ @7 a$ u file.Name = newFileName G0 A5 [. {/ }, ~, L) i3 p+ a(欢迎访问老王论坛:laowang.vip)
End If
4 w8 ]2 f- h* N End If- u1 ]* w3 V% F9 a(欢迎访问老王论坛:laowang.vip)
Next' _9 g* k& U$ e; b" A(欢迎访问老王论坛:laowang.vip)
End Sub
9 ^4 G$ {% k6 t& k- z' a7 u/ t/ H; s1 B(欢迎访问老王论坛:laowang.vip)
! d* G+ i9 W# M9 d: f' I2 `(欢迎访问老王论坛:laowang.vip)
4 L) Z7 q9 f% L8 {: x( E+ X(欢迎访问老王论坛:laowang.vip)
|