马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
2 |5 H3 C- w. S! ~
& j- @) V5 f6 W; u V1 p
+ z8 g5 S. c9 R! z9 R' 修改文件后缀名.vbs
" b4 P7 M! T6 X) j' V1 u; y'4 ^6 }/ J1 }3 |& H6 Q(欢迎访问老王论坛:laowang.vip)
' 功能说明:' g: ~! |( J7 D7 f(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
% {/ L- U; h- p1 h8 L' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。5 D; K+ _8 [6 z5 ?- u(欢迎访问老王论坛:laowang.vip)
'
3 A! }! @3 f3 x' 使用说明:
1 n; j6 x" \7 W' ^' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
4 N" X" h+ m! N6 L$ T. ?* o* u' 2. 双击运行脚本或通过命令行运行。
6 ^. H. i0 O' ^% s0 X8 M3 g' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
) W0 A. b0 o. w! R7 x+ U: c' E' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
" h7 b- B; n& ?3 d' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
- u. o1 V) a6 K5 q' 6. 完成后,脚本会弹出消息框提示操作已成功完成。! ]1 p. L; t9 E4 o; p$ X8 A, [4 }(欢迎访问老王论坛:laowang.vip)
$ h- j# z e" B( v9 C2 COption Explicit
8 D7 E0 b/ e% T# p5 b7 E- i& I4 B' j; G: C(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
& z) T' _& ~# p6 @0 D9 n0 w' ]Dim folderPath6 t _0 d& r1 I9 C0 h1 E(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")* F2 k2 q- N8 D0 p: c(欢迎访问老王论坛:laowang.vip)
6 E% ^2 ~+ d0 n. C: n' 获取用户输入的新文件后缀名(不包含点)" w, b4 t. T6 B, ?% L) b6 {, z(欢迎访问老王论坛:laowang.vip)
Dim newExtension- A4 B, l" w$ z1 i, `, H% \- _(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
, ~( ~/ L; D, f/ M# v
% W0 L7 H6 G7 a* m' 如果用户取消了输入框,则退出脚本" `" o% F" y: X2 X6 k5 |(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then: g; {; X' ?7 {7 q- S' K* s(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
% ?2 J; H0 R" p8 { w0 z WScript.Quit
$ ^% } A) x( w" a# I" gEnd If
, d& Q8 y/ j& W* k* r
8 P$ P* e8 D6 e3 {2 s1 r0 i1 s' 确保新的后缀名不包含点(.)! M, s6 A) E/ D4 g; {0 d# h(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then! Q1 c2 M8 t3 N7 v; w(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"1 Q. ^* A( N6 K; V0 l0 l" s) W/ Z) z(欢迎访问老王论坛:laowang.vip)
WScript.Quit
8 z8 Z4 o5 ?# f" V9 }) ]' ?End If
* ^6 f. Q4 {, }0 X3 d* m) A% ?& ~3 v$ ]0 } x1 [0 P2 {(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象
; y3 Z. ?" j3 p( g- aDim fso, folder, subFolder
# I1 S( U. X2 W! }; U& oSet fso = CreateObject("Scripting.FileSystemObject")* ?) V4 A4 J) K, q(欢迎访问老王论坛:laowang.vip)
, c' ] G8 R0 \' N6 C. _( w(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象& r: G2 A3 h2 h# \1 U+ T" d4 \5 Z(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)$ x* e7 @) I: W. m. I) t(欢迎访问老王论坛:laowang.vip)
- `& K% H. ~* X- i, U(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录. v* m# }9 F% O& d# s(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders: r9 R2 o% Q, _(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0
- y8 K! u4 r. z: e* L. d; a9 i6 E7 u+ U- e7 S6 x. K. |(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
8 K8 v; B, f" I3 h! J. n! MDim modifySubFolders
, k' x! {6 u- k9 W, zIf hasSubFolders Then
, ^% w" v4 c0 U# s2 y modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")* D/ J$ V# k) Z3 f- Q z8 R(欢迎访问老王论坛:laowang.vip)
End If
3 F6 @# t, o/ _9 P* \! ]
: P7 O8 }: k; d+ p3 o0 L( u; L8 Z7 u' 处理当前目录中的所有文件
& Y+ [- F' `) f& p" U, W; CCall ProcessFiles(folder, newExtension)
: ?! K% K v9 W L/ E/ |
, F+ z6 S" P" ^! A& U `: V$ \5 E' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
7 S5 m) @+ f3 x" }If hasSubFolders And modifySubFolders = vbYes Then
; K! o$ a# t9 U1 N0 S For Each subFolder In folder.SubFolders
3 T! o. ]) ?9 d7 G- X Call ProcessFiles(subFolder, newExtension), Q1 Z. i) W! W(欢迎访问老王论坛:laowang.vip)
Next
# r8 {( G8 I6 R# q$ J mEnd If# g" L7 f( m% S3 I, X9 M$ q(欢迎访问老王论坛:laowang.vip)
4 W& j4 H. P0 [" q(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成. h8 t4 G! \9 d# j5 u3 o; }1 R- B(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
3 E V- c+ F, g0 ]
# x, L: e0 d2 _2 B' 处理指定目录中的文件的子程序
9 @" `4 A) q% h' u" k$ J/ o& ^Sub ProcessFiles(targetFolder, newExtension)
/ i$ b4 r0 t" p- E3 r Dim file, oldName, baseName, currentExtension, newName, newFileName, counter2 B. j/ H5 p0 R. v7 @(欢迎访问老王论坛:laowang.vip)
Dim nameDict
1 k# m/ D5 N/ W8 L; S
3 O4 N1 v# v, f* N( Y6 }; \ ' 创建一个字典对象,用于存储当前目录内的文件名
/ q# h$ _' s$ [! N, U8 Z Set nameDict = CreateObject("Scripting.Dictionary")
! }0 _! @, _5 C( W% w
* ~/ y% |: D. D$ } ' 遍历指定目录下的所有文件
# p3 [, _( L! g' J- p0 G For Each file In targetFolder.Files+ y" q# i \8 t$ ]% a4 D1 z h(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
8 ?8 W$ l- Z+ ^6 k" V; d- q0 V If LCase(fso.GetExtensionName(file)) <> "vbs" Then- P+ M) b5 N0 E9 D* P(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名
, E' O$ ^. `3 n5 D0 q# V1 _ oldName = file.Name
) W0 n* }* J! f( S baseName = fso.GetBaseName(file)
$ F3 P8 k$ a# g# o6 w currentExtension = LCase(fso.GetExtensionName(file))+ o1 A2 ?6 `! p2 J4 f7 u1 {(欢迎访问老王论坛:laowang.vip)
4 e$ G5 v( a: t# o8 ?0 j2 a2 P(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名) q% O- H5 T- l(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then7 E9 Z2 N2 x& R9 v/ n* B' N(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名2 Y2 @) L9 c2 f7 u(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension1 H5 C( r" E; L, z: _4 W$ i(欢迎访问老王论坛:laowang.vip)
; P/ h+ I$ v W6 o( f ' 检查是否已有同名文件,如果有,则处理重名
9 p6 J# E9 j. W a4 G newFileName = newName0 u6 y. B" j' a2 E/ n( ^- _* i6 ~(欢迎访问老王论坛:laowang.vip)
counter = 1
a: @/ C3 P0 S6 N3 z# U3 q ' 确保新的文件名唯一1 o3 t9 ?1 x" I(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)( H5 I3 f6 Q( J- x2 l(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension5 T+ T" W# M8 Q( o5 x4 D" V" t' D(欢迎访问老王论坛:laowang.vip)
counter = counter + 1
3 v! f$ S r; k J Wend
1 L1 U. h" @% g! T
7 H1 c7 ]) g# ^1 h7 c+ d; i9 R* \ ' 记录新的文件名
' x1 Q: E/ V9 @& G5 y) M/ i4 g$ o nameDict.Add newFileName, True* ?5 B) y- I0 c7 l7 N; E5 d7 _* r(欢迎访问老王论坛:laowang.vip)
" T( J2 Y9 [3 y L! P! K(欢迎访问老王论坛:laowang.vip)
' 重命名文件
% _8 c4 x) H6 t$ j, |! G. F+ M2 B file.Name = newFileName8 n/ u3 p8 r/ D; Y6 ?(欢迎访问老王论坛:laowang.vip)
End If
2 Y8 U; K6 N" `* k8 ?$ C End If
1 i) M [& d1 R3 N, x Next& q: U& \( u5 L D; p$ L- ^(欢迎访问老王论坛:laowang.vip)
End Sub/ t' h! E9 d+ t' `4 o+ K9 \(欢迎访问老王论坛:laowang.vip)
& j4 b6 X" Z% _% ?
( ?( S7 v) e" r3 L& u5 V4 h3 b. Z(欢迎访问老王论坛:laowang.vip)
|