马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):2 j7 L' A8 j9 ]$ a u# `% F$ b9 C(欢迎访问老王论坛:laowang.vip)
! |- U& i! |- u$ N
' p* [% y$ h- \3 P2 J0 T! \: ^) f6 p2 g' 修改文件后缀名.vbs, V" x7 u% C: K1 P( B5 A- [( P(欢迎访问老王论坛:laowang.vip)
'
( }; l5 ^& S: [+ E! Y% W _9 H' 功能说明:- t" r# k i8 y. c7 ~(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 9 k" F: Z/ A {# R( a2 C(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。) m U; r" J! u, z3 ]6 S(欢迎访问老王论坛:laowang.vip)
'; g' U6 o3 T7 M. _(欢迎访问老王论坛:laowang.vip)
' 使用说明:+ P4 w3 S1 [1 U# `9 Q7 e5 e(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
/ N+ z) p5 o4 E/ ]' 2. 双击运行脚本或通过命令行运行。 D5 o" N" [' P4 ~(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
: }3 e) k4 d" `1 |% b! N- h& A' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
$ b6 l: P9 e* `' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
; r0 e/ O# [9 B9 \9 T8 l. j4 p' 6. 完成后,脚本会弹出消息框提示操作已成功完成。9 x, V3 e, I9 X, X' {& Q2 C(欢迎访问老王论坛:laowang.vip)
' D( [- v& _% v2 LOption Explicit* Z# E# Q' j1 o" I X8 M(欢迎访问老王论坛:laowang.vip)
1 I- u3 W! Y1 Y% D- Y8 O(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
0 t. f' x% V6 B9 UDim folderPath$ }0 D; u/ @! ]8 C) ~(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
# s4 ?; w# v! N0 h- S) }& p. H# y& I) q" I. ]* K1 R(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)% W( K" E* t! C) j8 V! y( e, I(欢迎访问老王论坛:laowang.vip)
Dim newExtension# r1 X! t7 F8 @5 m" V! U6 `! W(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
" W' W. e2 _" j' t. @8 Z
+ p0 y" j1 ]" U2 S' 如果用户取消了输入框,则退出脚本
, l0 |. Y# f9 }, ^If newExtension = "" Then6 k. w6 T! S; }' c9 b+ v(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
) `2 R% M+ N3 `: x6 u+ S WScript.Quit% h5 H. U% b, j8 ~(欢迎访问老王论坛:laowang.vip)
End If
: g7 _ S( f$ @3 u
% H% m4 b" p. n3 l2 V6 y K' 确保新的后缀名不包含点(.)/ ~3 S+ Z* x; t9 D) H+ Y0 J9 N4 s# ](欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then4 B8 P m' e; z" y/ k, d0 |(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误": v! U9 K$ H1 g(欢迎访问老王论坛:laowang.vip)
WScript.Quit
2 I# G3 C) ~) _5 ~0 `- W: Z \End If! W+ d. u$ s) Y: u7 p(欢迎访问老王论坛:laowang.vip)
2 I0 V) K1 G7 u1 F% h q(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象8 e2 {" L4 }6 ^% T# o/ _" e1 M(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
% \% x& ~0 ?6 Q9 pSet fso = CreateObject("Scripting.FileSystemObject")+ u8 ]/ @& }5 F: e+ u# }(欢迎访问老王论坛:laowang.vip)
# d0 P" K8 V2 h4 |8 U! u' 获取当前目录的 Folder 对象) F! N! P2 v2 n* C6 v6 a: }& o(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)
- f0 w: F N7 d# U3 ?
& w/ g4 E. a" @! C) M6 m& q5 h7 U' 检查当前目录是否包含子目录& J5 S- ], \& i8 k4 y8 k. t(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders9 ]" H- L) t3 d- g" d x(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0) _' P& R/ P6 M, u; F(欢迎访问老王论坛:laowang.vip)
2 [3 @. n" t- |(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
! B1 `% K, S% b6 P" I! W* m/ @, qDim modifySubFolders8 c( F' x$ \* ^3 B& O9 f(欢迎访问老王论坛:laowang.vip)
If hasSubFolders Then% M8 _* y4 k$ Q- M(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
6 x, E9 k1 d# m- w" R6 mEnd If
. U- u! Y1 j, d Y7 X$ ~
, x3 v. @$ f2 z1 _$ x( h; h. r2 t' 处理当前目录中的所有文件$ C; w! ^; h' R(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)/ z( n* z" v2 f9 O7 I" Z(欢迎访问老王论坛:laowang.vip)
: X9 u: G: V* r' _9 t# T(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
: w; L: l( N# SIf hasSubFolders And modifySubFolders = vbYes Then
: `' Q3 `+ b& ]2 l# Y& c: z For Each subFolder In folder.SubFolders" K! t R. B0 z$ X l# b: A(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)% {" L/ f/ K& |: G1 \(欢迎访问老王论坛:laowang.vip)
Next% R& h& _ g! ?(欢迎访问老王论坛:laowang.vip)
End If9 q' Z2 M% |- E(欢迎访问老王论坛:laowang.vip)
$ j1 u1 c1 C) c& \+ ?' 提示用户操作完成# K8 C, L r& n' j; b% O(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"9 X" d4 Y! Q" ^(欢迎访问老王论坛:laowang.vip)
$ R) i' ~* ~- o" @% [0 b( L(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
9 u- {; K3 }- B& CSub ProcessFiles(targetFolder, newExtension); O0 T7 q5 F; C; a+ A7 ](欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter5 C: F8 B0 |1 _$ d9 ~% `1 M2 V(欢迎访问老王论坛:laowang.vip)
Dim nameDict
' K* {/ l; T5 L- X6 |' ~& w% h. i* I( c(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名6 K9 g I$ m/ Q(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary"): p M2 S# H7 c* {$ \/ M(欢迎访问老王论坛:laowang.vip)
3 M. |" p4 @8 W1 q(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件
) i$ V% v( L' T3 j0 U* d d For Each file In targetFolder.Files
, V9 j" x' [9 v# h: `4 f) a ' 跳过后缀名为 .vbs 的文件
, W, M: k+ O+ k; ^) l: V% ?% ~1 h If LCase(fso.GetExtensionName(file)) <> "vbs" Then+ d7 x3 |- u R(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名
9 |! Y" X5 F4 X; I8 R2 G& F oldName = file.Name
~0 \, z3 C0 `" b: I5 j; a& y baseName = fso.GetBaseName(file): O" l1 \! H+ N$ t(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))' ]7 M) @4 q% Y$ O( i(欢迎访问老王论坛:laowang.vip)
y# f/ J) E L) B0 b6 o( o1 L. p(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名
& F% ~8 U' i! X. T( _3 R If currentExtension <> LCase(newExtension) Then/ {/ N. Q$ M( b* W: N! ~' z(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名
, l, A `+ }* R+ L( R3 U5 b newName = baseName & "." & newExtension
[) _* H. |+ G# R* i
+ T( t; B, x4 }8 E ' 检查是否已有同名文件,如果有,则处理重名
. |+ S" I# ?7 e newFileName = newName
9 Z' j) g e* @ counter = 1! T' x& ~: F8 o( |# p- F(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一1 C; o8 I# d& e& S1 E) w" I(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
) x8 ^, b; R# H4 d% ~9 ^5 W newFileName = baseName & "(" & counter & ")." & newExtension
! _0 ~: h' L( q- P. _. C counter = counter + 1
" z3 j6 U2 K2 ?& w ]' L- I Wend/ p8 ^+ p T- n( s(欢迎访问老王论坛:laowang.vip)
. g" i" {$ g+ ? ' 记录新的文件名! {, @9 _1 k! \# ~. k(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True
% Q8 Q5 B# N$ T+ v* A+ j* f* b0 B3 j' H7 ~(欢迎访问老王论坛:laowang.vip)
' 重命名文件
- v) A$ K. X7 N1 r7 J4 g+ l! | file.Name = newFileName* ^8 X) ^. ^7 k(欢迎访问老王论坛:laowang.vip)
End If
6 _( v4 ^3 A1 J End If
0 m. q9 t$ R, L+ L* ` Next6 X3 X- d5 z/ q) P7 Q( |(欢迎访问老王论坛:laowang.vip)
End Sub' \# j9 ?: n- l0 Y2 c( `(欢迎访问老王论坛:laowang.vip)
2 i5 y7 A4 m2 m* V* q7 y5 r. D
6 D& |6 L; V& f) Q7 G# L% \; h. |0 O7 }/ j3 ~(欢迎访问老王论坛:laowang.vip)
|