马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):4 a/ |! [3 K3 B2 r- S; U0 i3 [(欢迎访问老王论坛:laowang.vip)
$ U2 J8 o; \7 e. Z2 U(欢迎访问老王论坛:laowang.vip)
+ Q7 }5 S9 a% x/ a' 修改文件后缀名.vbs. K4 I; H0 [6 ]5 K; ]- a(欢迎访问老王论坛:laowang.vip)
'- o" E2 ?+ z% i5 C! S3 N2 p(欢迎访问老王论坛:laowang.vip)
' 功能说明:+ n' m" T. F' j+ U1 Z% R7 B(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
6 O* p" y+ j0 a; F l# o' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。
9 m1 R! Y5 T. V3 R( y$ [/ C# V': m/ u# q! ^( e+ k5 G(欢迎访问老王论坛:laowang.vip)
' 使用说明:3 S( ~* x, u$ p- E7 B) C+ D5 I(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。% A7 u8 ?$ g2 h& \2 ~3 F5 N(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。: \0 t' K$ s% A7 p; H(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
. B5 M2 K# V' F) W Z' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。3 X y3 L$ r$ q! f2 I7 A* P(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
4 L$ c ~- ?* M: a" a' 6. 完成后,脚本会弹出消息框提示操作已成功完成。! I2 f- G' C0 V) T4 F(欢迎访问老王论坛:laowang.vip)
/ f# ^# i' M0 F5 F1 u8 YOption Explicit9 A% p( }( ?4 E! Q4 ^0 S5 C(欢迎访问老王论坛:laowang.vip)
+ Z- [! f3 p2 `(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
/ ~0 I' R# E; P4 o( t" LDim folderPath
' M# n( S H; k# X& dfolderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")- b, i i) n8 F- [4 S(欢迎访问老王论坛:laowang.vip)
( V5 k E4 y$ s& ~# y7 y* r' 获取用户输入的新文件后缀名(不包含点)
. r9 p/ \2 J: {4 K; W" c; YDim newExtension9 `0 b' Q; D- l- \(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
5 n! k& j- P: `* I
, N+ ]" P8 W2 v# |4 h' 如果用户取消了输入框,则退出脚本
& V5 G0 x& N5 @: qIf newExtension = "" Then, ~$ b- b, h! w) S8 N2 N" B1 R(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
' H& B& C5 x2 @6 g( g! U1 j WScript.Quit) ~0 T( V) t4 p; _. t X7 W5 P- ?* n(欢迎访问老王论坛:laowang.vip)
End If
4 H- y+ A4 P- C+ k k& S: U- l( n- v* X7 o(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)
& c, J# U% t( i( Z! t/ aIf InStr(newExtension, ".") > 0 Then
4 [6 ~) H- B$ \ MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
+ K6 s5 ?2 Q" S/ A0 I* s7 w$ M WScript.Quit! C7 k8 B+ m- H: ?3 B4 u0 ?5 Q(欢迎访问老王论坛:laowang.vip)
End If9 p; H! v. p7 D, e2 n' x; G(欢迎访问老王论坛:laowang.vip)
5 T5 a6 L3 T/ E9 \% N& d' `0 a2 O(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象
. ^5 b( |2 J) L, I( P: z; p% UDim fso, folder, subFolder
3 e9 e7 y. ` a* d/ K) `Set fso = CreateObject("Scripting.FileSystemObject")3 l$ @6 t1 M* f+ O(欢迎访问老王论坛:laowang.vip)
- O4 @9 i/ y5 }; n+ h. d0 Y* Y(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
' o6 t$ }9 A! I- C5 DSet folder = fso.GetFolder(folderPath)1 E7 S' ^% W* H& V2 ](欢迎访问老王论坛:laowang.vip)
) `! Q( _! o0 M7 q- U) U8 \2 `* ]' 检查当前目录是否包含子目录7 k( c6 P. U! s) T(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders
* h7 v! ~1 @" q {; f8 L/ FhasSubFolders = folder.SubFolders.Count > 0: D1 _0 F1 F% K4 I, `(欢迎访问老王论坛:laowang.vip)
1 r. l. j4 P# d& p) `' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件6 I+ `- x: q7 {(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders, ^" D5 N# D: h+ k/ j* }" g- v c(欢迎访问老王论坛:laowang.vip)
If hasSubFolders Then% ~) M: R1 g1 L( f$ m(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")5 x" M4 e _) ^' n& w T j(欢迎访问老王论坛:laowang.vip)
End If
5 c$ ]. g$ i) J6 T$ _3 ], F- U+ y2 c8 T1 S& O- I(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件
& E6 k6 W( ]- S5 J6 D! R( VCall ProcessFiles(folder, newExtension)* r: H" N Y9 Z8 `- E6 r9 p(欢迎访问老王论坛:laowang.vip)
. m* g0 H: F/ X+ d, W @" L( Q# p(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件% O& m" g( o, J; K! X(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then
' i8 J6 R& V, g, y For Each subFolder In folder.SubFolders+ x& k1 b A" {4 H# X8 L(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension). s+ {( L8 Q, ?2 o' L(欢迎访问老王论坛:laowang.vip)
Next+ n6 q) ~ G$ [7 I(欢迎访问老王论坛:laowang.vip)
End If
) ~0 C" a! g M, N* I
- v, T# N+ J9 P( i% R1 x: m! O' 提示用户操作完成
8 t M% o/ o1 @MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
; `" r/ Z, F( l( P
; t' U3 t4 Z2 Z6 \" P7 z' 处理指定目录中的文件的子程序$ k$ Q& w5 H: q; K: K" A y(欢迎访问老王论坛:laowang.vip)
Sub ProcessFiles(targetFolder, newExtension)4 j5 P0 O, X1 f/ |8 l(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter: X7 i' H9 `) a(欢迎访问老王论坛:laowang.vip)
Dim nameDict
, O( x$ T4 e6 A+ f' q6 E% W, J
/ n% t6 ], g) J7 s" F8 h7 ~ ' 创建一个字典对象,用于存储当前目录内的文件名
D- p- t' v9 G% E$ h, G! ?& E2 R Set nameDict = CreateObject("Scripting.Dictionary")5 S' G- |. L% m7 }/ e1 E(欢迎访问老王论坛:laowang.vip)
* Z/ [; E3 E/ l3 a(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件3 ?. t8 j+ J- B4 `4 S- B(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files
0 l. v/ \& }* C t, W1 @ ' 跳过后缀名为 .vbs 的文件
9 M: M! {. H+ d/ i# q; L4 \ If LCase(fso.GetExtensionName(file)) <> "vbs" Then! z$ n1 d6 P5 y+ z- G$ o) D1 x(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名6 N& F1 y6 r0 n9 @3 v( i B/ s(欢迎访问老王论坛:laowang.vip)
oldName = file.Name
, l% e( |2 E7 \# m, L; D baseName = fso.GetBaseName(file)
( s% k/ l4 M6 [% j5 G/ Y+ O% ^ currentExtension = LCase(fso.GetExtensionName(file))
6 M1 b T2 V9 T2 i6 C6 a4 m5 |5 u(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名9 o5 H. Z/ P9 \. f, c3 P(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then; T7 N: h! i6 N: C( g1 L) r(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名
. }' d* U7 n( Y4 r3 v newName = baseName & "." & newExtension
& C- K: x8 H$ c% H+ Z u5 Z8 |0 v9 n0 C* {' j(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名
- r2 f# l) Q/ i* O+ f' D7 U newFileName = newName
7 ^3 h P. V" Z& R* b) k9 i counter = 1% }1 [- H R2 K2 O/ d4 _(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一- E) c0 V- `6 |: n; I3 m! z6 T3 i0 Z(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)4 o# m; Z3 f. M. U1 r, Q9 Q(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension1 M+ _ I* w' f$ l(欢迎访问老王论坛:laowang.vip)
counter = counter + 1
) e& B5 O |( T; e- w Wend6 h3 s+ \5 k1 M& {. f+ j, z# S! I8 {' A(欢迎访问老王论坛:laowang.vip)
" ~# A3 ~& ~: c4 j ' 记录新的文件名* C1 Z" L+ R( h% e" `* N; `(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True* Z- A1 X/ r3 a" t. Q(欢迎访问老王论坛:laowang.vip)
8 n. P* g/ @7 D ' 重命名文件
/ C' g3 k0 j# `0 O5 w* K: X file.Name = newFileName
) w- K: O# P$ O% K' [5 W End If
4 X% R" @6 ~) M# f+ E End If
! [1 U+ e! H- m* {5 c Next
1 y# h9 @% m/ E, A6 x t/ E( PEnd Sub' {2 s K3 J: |+ |* K(欢迎访问老王论坛:laowang.vip)
1 x* |; I8 \4 v( b) {3 u8 e& C5 n/ p+ O& a(欢迎访问老王论坛:laowang.vip)
* n, f R; G: e# u(欢迎访问老王论坛:laowang.vip)
|