马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
+ y# n9 g" o! b0 |
2 W. z' F0 d. g; o- g+ }0 S# \( _( W$ A8 F4 r# F5 s- C(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs' N, c# J. a. k5 |' k, m3 d(欢迎访问老王论坛:laowang.vip)
'3 L: m' N0 Z! ^, @8 g(欢迎访问老王论坛:laowang.vip)
' 功能说明:/ M" k# m& Z- C7 M# }3 a5 R* \(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 + e I. Z2 |( ^# f F(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。* t2 L- W* E) C% r6 p( r9 K5 n$ _(欢迎访问老王论坛:laowang.vip)
'( I, B* v' H3 K5 Q$ s9 I# u(欢迎访问老王论坛:laowang.vip)
' 使用说明:
+ z% I9 h& R- ~' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。# r8 R( N+ Z) M. A(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。
/ n& o7 p5 P" U! F' y- j; l' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。6 w. i7 J2 g8 G; b. d$ T, c9 ?(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。: q! d1 W* i8 h4 N' q7 h(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
9 }/ s+ @( ?& C' {' 6. 完成后,脚本会弹出消息框提示操作已成功完成。( ?* {% T0 t# M9 ^7 ]# f8 }, x(欢迎访问老王论坛:laowang.vip)
9 [% \* t4 e2 {1 d! BOption Explicit& E8 _9 ` o" g0 M6 `(欢迎访问老王论坛:laowang.vip)
3 n1 u ?* z2 H& y7 B) C/ h6 t2 l' 获取当前目录的路径' C I" D1 R8 `$ \- y' m. s(欢迎访问老王论坛:laowang.vip)
Dim folderPath( E/ y! X6 L' j, ?% W" Z7 k$ b/ @(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")8 E5 O! C0 t6 f8 W: t(欢迎访问老王论坛:laowang.vip)
' s- r4 E/ I- H2 p9 F3 _2 ^(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)& c/ z+ A& q9 ^" E(欢迎访问老王论坛:laowang.vip)
Dim newExtension, @' j [; B6 e9 D6 s5 q(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
0 f _' U! r, Y8 K0 A' x( E, q& c7 j# i6 a; }+ M6 O# a3 ~(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本8 O8 I- K9 Q8 u(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then
8 }% f- b. o& r5 _* F MsgBox "操作已取消。", vbInformation, "信息"
. v! f. J8 A* D0 }3 T \4 Q/ q WScript.Quit
, S! w1 |+ C1 o% d: t. h/ X& P- ZEnd If( x9 p$ o# f! n, |! c) {(欢迎访问老王论坛:laowang.vip)
) x- x- o& C2 Z |(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)! j7 _# ?& \% J1 M(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then) ^- C1 V' r% l- n7 z! ~ i(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
% X/ I+ O7 Z H. E$ `4 j$ p WScript.Quit
, a$ h& O1 s5 D( p2 j REnd If/ d3 M* P5 R: m, m+ E(欢迎访问老王论坛:laowang.vip)
. j! x3 m# ?' X6 @% m* `(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象5 K" v* Q, i* @, Z(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
! D/ b" _1 w+ z. E2 G, [9 LSet fso = CreateObject("Scripting.FileSystemObject")
; v$ q# F0 H4 ]/ r4 S1 C8 r1 e! f' M X) I( K' ^(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
/ o1 m9 [6 L) c2 |# f, fSet folder = fso.GetFolder(folderPath)
; O6 H# [+ u: ]. x& P, H' I5 G' l6 ^# j4 u$ B; f(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录, E9 s6 k. Q4 ^8 K! C% O* P(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders
) S! c8 d; h$ Q& W2 lhasSubFolders = folder.SubFolders.Count > 0
8 ^2 L9 v" _& a, N
x3 l5 \, D+ v6 T' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件. B, `0 [& t3 X' Y2 A8 D(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders
2 o& ?5 `, F8 V0 U, Q7 ~/ Z; DIf hasSubFolders Then
* J4 U4 Q4 \$ N% X# R3 A modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")5 b: `0 r5 s4 p- c, o(欢迎访问老王论坛:laowang.vip)
End If
1 f/ z' l t$ |! U3 J" `
^5 }* Y9 B( l' 处理当前目录中的所有文件
: I; S! Z3 _7 i3 [Call ProcessFiles(folder, newExtension)8 t% a. G3 x' g, w7 D+ m" R- c3 l(欢迎访问老王论坛:laowang.vip)
K5 S; V! {7 F+ f0 P; _$ _(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
' E9 [" V; u1 O) \If hasSubFolders And modifySubFolders = vbYes Then& ?/ V1 e% g" J& u8 G2 E(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders% O, ?& X# S- p$ g8 ` v D, G' j- |(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)
$ e$ P6 @" m6 Q! u0 z" n Next) c3 @& X* ~$ j7 W8 B: A(欢迎访问老王论坛:laowang.vip)
End If
3 [% ?% A4 b! }3 Q6 t
T7 ^6 U$ r0 w$ a4 j2 Z. J8 y6 X2 l' 提示用户操作完成
6 t. [( k, o0 Z H* j9 OMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
g: k. k, p6 K4 m# f9 r" l5 @7 s4 {+ Z" _1 @(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序; z! J- X) h% o. o+ P! Q* w& R(欢迎访问老王论坛:laowang.vip)
Sub ProcessFiles(targetFolder, newExtension)6 Y1 x! a1 {# B2 G) }9 o9 D(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
, \0 ?* J0 c. Y+ ?" r4 G0 z$ P Dim nameDict
! z& n8 Z2 [" u, G h1 l# d- m, p* `% y8 C1 y(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名
! B+ H- h2 j" O8 M6 M Set nameDict = CreateObject("Scripting.Dictionary")2 o0 q' ]' `) D. |/ w( {(欢迎访问老王论坛:laowang.vip)
% @5 B- m' p+ o$ P! D ' 遍历指定目录下的所有文件+ U ~ o5 i: Q7 E1 ?(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files1 D7 p7 g- k. j9 x. q(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件# k# v# A. _; @3 B(欢迎访问老王论坛:laowang.vip)
If LCase(fso.GetExtensionName(file)) <> "vbs" Then
/ A! L, i" C6 u. w- ~, b& J+ T3 H ' 获取文件的旧名称、基础名称和当前后缀名
3 K$ L. {6 V0 r7 H7 I, |; j oldName = file.Name# J! O4 ^) i, S% C3 T. P(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)
% u3 e: c! U4 @2 ? currentExtension = LCase(fso.GetExtensionName(file))6 V. s- |8 {4 A: n% B(欢迎访问老王论坛:laowang.vip)
# F; |+ g* Z- m' G(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名
: c6 K# ^# G0 d, @! R2 |' X If currentExtension <> LCase(newExtension) Then. ], I7 U3 _7 q$ Y(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名' r, a: [0 D( l6 y( K(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension' F% n a0 Q' ^: w- i: Q6 Z+ N r(欢迎访问老王论坛:laowang.vip)
; L/ q2 B: Y# a. v# f ' 检查是否已有同名文件,如果有,则处理重名$ J' K/ T2 g8 G6 s# d2 G(欢迎访问老王论坛:laowang.vip)
newFileName = newName
5 n1 Y B! w7 X9 v" }7 m- ^0 A counter = 1$ _; _% A! u) R/ r9 t8 A(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一2 S, `+ q6 [& u(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)1 b" b D$ s) [8 N, }: I(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension
! h- I0 T' U( u2 I counter = counter + 15 t$ i9 R2 ]$ ](欢迎访问老王论坛:laowang.vip)
Wend1 }7 |7 D- L! u8 s! ?. ]( S(欢迎访问老王论坛:laowang.vip)
* H% z. r7 X7 v2 f(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名7 U% M9 @7 D; s) j+ h$ D(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True. K5 }9 [4 V! I' g' n2 h% k(欢迎访问老王论坛:laowang.vip)
; v ? b) a' d7 m7 ^: l(欢迎访问老王论坛:laowang.vip)
' 重命名文件$ j: Q# k$ i/ g' \(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName
+ w) `" i8 I: Z/ A4 K3 A c7 ]2 n0 J End If" j1 E- l3 G/ I) b4 U3 A(欢迎访问老王论坛:laowang.vip)
End If
9 b4 w a( \; t Next
: O- i$ u Y# C2 H" DEnd Sub
. S2 X+ ?. Z6 ]( a& P1 F+ p: R- L
5 `/ ?' P! a. p( \. y/ Z. C( d. E1 d1 c(欢迎访问老王论坛:laowang.vip)
i7 I# L% G& B(欢迎访问老王论坛:laowang.vip)
|