马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):& p2 d; B+ h, ~' u# k [(欢迎访问老王论坛:laowang.vip)
. p6 V5 }. ^, \% k; j
0 l- C6 l2 O& z5 w' 修改文件后缀名.vbs
6 K" r8 g. m+ e'
7 C1 [- ^* q4 a' t, R' 功能说明:
( M! _2 m( D8 R: B2 m' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
8 T& a8 z4 A' Q1 S9 W' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。8 \" Q9 d, j* `' c# E. J G* ^/ J(欢迎访问老王论坛:laowang.vip)
'
( U1 V. G3 u1 P) D! L6 K; ?' 使用说明:3 D, L8 H. s- g" B(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。% r' R& W7 ^3 |) g0 r(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。% @- \1 l( j8 ?* |6 e(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。. ~) J$ @5 s, I! t* g(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
' N( D6 B" @6 Y1 @/ T' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。" C/ h$ z8 {1 V+ H( z( `(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
2 g, k: t2 h; e& ]5 O: L
$ H4 V1 y1 R1 ROption Explicit
* M) v! l; P! j! T, I7 H4 \# I8 l- p9 T, m' \. n(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
|; T/ q C# N1 JDim folderPath
4 f( F. Q; M @. l% w5 E# H0 j, @folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
* P& M: A8 K1 P; Z1 U; k9 f1 |
! F' p0 A* o5 V" f) K* q3 ^% H9 B) `' 获取用户输入的新文件后缀名(不包含点) S$ ^5 B |- h3 q( W `' l(欢迎访问老王论坛:laowang.vip)
Dim newExtension
0 E/ E5 i ^3 s& L4 m; M" a$ i6 M8 XnewExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")/ n( H |, l+ t8 [3 u0 Z4 Q) y(欢迎访问老王论坛:laowang.vip)
) x' r s. K, A. x' M. k/ P(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本$ o$ A) _$ z) l' y(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then/ O8 }2 D( s& N. \(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"& t# e, _7 c4 a8 i(欢迎访问老王论坛:laowang.vip)
WScript.Quit
7 P3 p# y# u+ r4 g& ?- yEnd If
! @* c3 Y% P. A9 O( c+ O) M1 l
3 X4 L* ?# L2 Z# e' 确保新的后缀名不包含点(.)
# O7 L$ R. u P; K( q9 mIf InStr(newExtension, ".") > 0 Then4 k! q2 E. y9 U& G% z* \(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"$ N" @7 F# ~% P2 X5 y(欢迎访问老王论坛:laowang.vip)
WScript.Quit
/ w6 i7 G7 c) Q! rEnd If% X' D0 _7 q. ?(欢迎访问老王论坛:laowang.vip)
% K! Z, f1 @% S+ Y ?; i4 ]4 e% s' 创建 FileSystemObject 对象
( R9 Q* d" z: b1 d2 B$ JDim fso, folder, subFolder8 e/ ]& E' u( }# V' z& X; P1 h. @(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")
- j* D V% Y' q1 R' ^9 w
6 B+ `( [" T1 v0 ]+ G& \ b6 z' 获取当前目录的 Folder 对象
6 P) L9 ]" j1 r6 e5 G. M% ASet folder = fso.GetFolder(folderPath)
- W( o' N3 b ~1 S" v$ x$ O; e5 ^# T(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录
) o, F5 q! ]( U4 ZDim hasSubFolders
( S% t# a6 `% n7 dhasSubFolders = folder.SubFolders.Count > 05 m5 D6 j. W( z% ], ?, S l: T(欢迎访问老王论坛:laowang.vip)
0 G2 @* v! ]" i+ z2 F' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
4 ?6 q, y2 m9 F4 l1 V7 ], f) GDim modifySubFolders
' p5 l& _3 {) m% A; m/ I& b y& pIf hasSubFolders Then: M* Y' E- E# |& U: C(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")& y2 j9 ~: n* c(欢迎访问老王论坛:laowang.vip)
End If
. \ r8 t# I& _% Y' z: U+ ^9 J) m) e4 J) M(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件2 e- f( D: ]! q3 ]/ `(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)
- s. T% F8 P5 L/ k/ G$ I, V' S* l4 c+ u, k( \5 S' |- y7 H(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
" p1 Q, ^) v& R. O4 cIf hasSubFolders And modifySubFolders = vbYes Then$ M! n( [/ w% H5 v(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders
" l& f/ u1 x( a* Q3 z: A/ O1 L Call ProcessFiles(subFolder, newExtension)
$ C9 @: f U: W( i, D. l( z5 s Next7 S) T* B6 b; X, e. R(欢迎访问老王论坛:laowang.vip)
End If
" J7 l/ B w( ^) |
# V- Q( d/ s8 |' i' 提示用户操作完成: [1 V: ?, h& m: p8 _: V(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
* r! h" J0 N* V: a/ i6 L1 _: P9 L' D
3 J! ]% H$ ]/ _2 n- Q' 处理指定目录中的文件的子程序
4 `8 {; d* z4 Z0 SSub ProcessFiles(targetFolder, newExtension)# n2 B; @1 w" ?4 S; d(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter) v, C& M2 J: Z4 g9 [(欢迎访问老王论坛:laowang.vip)
Dim nameDict8 V" M& h, b& [4 s; D4 D7 o(欢迎访问老王论坛:laowang.vip)
9 w$ ?) W. J% i* W& Z; s0 a(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名1 u- `( y: ~9 L& `(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")/ ?9 b& b H" T7 _2 s& v(欢迎访问老王论坛:laowang.vip)
/ y+ r- P" U" i6 m/ x ' 遍历指定目录下的所有文件
8 q! H& r% m# m0 n6 C For Each file In targetFolder.Files- ~( r0 s+ }* X(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
: M) N) s" n. P; i r If LCase(fso.GetExtensionName(file)) <> "vbs" Then
2 w5 ]/ ?1 f4 G1 g& d0 D$ S ' 获取文件的旧名称、基础名称和当前后缀名
, r; X2 J: l K h% w# b$ h oldName = file.Name6 a5 U; n$ i' \3 z n(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)+ t3 n2 u! _. J4 X: a(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))1 R$ g6 | F+ Z% y/ V(欢迎访问老王论坛:laowang.vip)
; T; y( S8 f6 w8 \7 M(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名
, R* s7 E" O J& B If currentExtension <> LCase(newExtension) Then& D6 x: M6 E8 h5 Q, u(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名
' x, y6 Q5 Y7 I* M( ?4 j5 y) L newName = baseName & "." & newExtension
3 ^4 v4 Q, X( l" z7 t/ q& l$ u
" U1 _2 {3 A$ a2 \& } ' 检查是否已有同名文件,如果有,则处理重名
7 w% }0 R) p% _! s newFileName = newName
( P l( s9 }, g0 X3 r' }, q counter = 1 C, S: o3 j2 c; q' t; ` |(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一
0 E6 R1 l- \. G2 b6 q5 L While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)& S* I" L9 |: v: S: O(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension" Q2 {9 t5 T0 d' T(欢迎访问老王论坛:laowang.vip)
counter = counter + 1; R5 X; o3 W" q(欢迎访问老王论坛:laowang.vip)
Wend7 P% d& B5 Y3 {% G/ q6 a1 G(欢迎访问老王论坛:laowang.vip)
, y- o1 Y) T$ e, P! g- p ' 记录新的文件名& _# a( s# L: ?* j(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True1 b+ t. s* r$ z0 d" t(欢迎访问老王论坛:laowang.vip)
' N3 Q1 C% D. x) e. E ' 重命名文件
( T2 P7 y8 d. V( @+ Y file.Name = newFileName
* L* c f# e* C: k8 f1 i% p End If4 Z2 k# l+ D/ G, Q# ~$ M(欢迎访问老王论坛:laowang.vip)
End If+ o9 Z; x, U% ?7 `- x0 E% j; v, I(欢迎访问老王论坛:laowang.vip)
Next, z/ }3 o9 i* A5 H(欢迎访问老王论坛:laowang.vip)
End Sub4 e* \* b+ u3 O/ l(欢迎访问老王论坛:laowang.vip)
' L: v+ k" d8 V5 V# q8 |
% H' U, v( O5 x* j/ _% @' }5 H6 g4 _( |0 m/ e, B6 t5 a! ^(欢迎访问老王论坛:laowang.vip)
|