马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):# b1 C1 H' b6 g(欢迎访问老王论坛:laowang.vip)
: E6 H& K4 p+ l$ y( L& a(欢迎访问老王论坛:laowang.vip)
6 v! q: ^: f2 M# X9 B; L' 修改文件后缀名.vbs
' i1 V+ ^, e) g8 n1 Q'9 N" h+ G G" F! g(欢迎访问老王论坛:laowang.vip)
' 功能说明:
/ o1 a6 Q* j z8 e' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
0 G1 S5 a$ J1 {! B6 D3 D/ E' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。- C F( N: _0 n(欢迎访问老王论坛:laowang.vip)
'0 j' ~+ M$ K$ [: w `8 N(欢迎访问老王论坛:laowang.vip)
' 使用说明:
5 B# g7 U: C Q, T% r7 G1 n' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
2 n8 q( J( R- @2 Z# g3 [5 ~' 2. 双击运行脚本或通过命令行运行。9 \. y2 i9 \4 N2 r(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
* i7 R$ ^ f+ o# Z' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。; m i" T- Z2 A; ?(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。! U" J2 _; |) w. E(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
; `2 O Z$ Z$ ?
3 T9 H) \, r& D' d. J( ^Option Explicit# ~( a& P3 s5 ` O j1 P(欢迎访问老王论坛:laowang.vip)
- z5 l7 Z% u: y' 获取当前目录的路径: H" _* R7 }1 \& a( c6 l(欢迎访问老王论坛:laowang.vip)
Dim folderPath+ v1 F2 p0 [0 K, A" J(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName("."): V8 F/ @. p( i$ i9 y(欢迎访问老王论坛:laowang.vip)
+ X( f: v, T' R( A1 |8 i(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)
5 \) B7 R2 Z& {8 B3 p% CDim newExtension3 y) q7 x" q4 n( z(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
1 J/ ]& M; F: {+ S" T% y; T
$ K& ]- h4 A+ v7 I: H' 如果用户取消了输入框,则退出脚本
! Q7 T: ?2 S4 {7 s& HIf newExtension = "" Then
- F4 q( D, [# J/ i# c MsgBox "操作已取消。", vbInformation, "信息"1 @& i0 Q* m# k8 N; H- O(欢迎访问老王论坛:laowang.vip)
WScript.Quit8 z) s8 p+ y+ \: u6 v- ?& E3 L(欢迎访问老王论坛:laowang.vip)
End If
- e: ~# t- t( I( C
0 x `) f- s- m/ [) e# M' 确保新的后缀名不包含点(.)4 N4 z9 F9 ^% x! T2 ](欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then
1 q" m/ \0 } @2 w MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误" S2 s/ O- I1 o* f(欢迎访问老王论坛:laowang.vip)
WScript.Quit
) u! s M9 ?3 Y; W1 bEnd If
& I7 s- X4 `9 q) b! l4 p% Y& }) u0 x8 \(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象: Z. f( L) j8 n(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
5 E8 s" w( X1 D, k( R8 q% XSet fso = CreateObject("Scripting.FileSystemObject")
9 N! y5 e) m8 q" A" a
: J* o1 `8 Z, S# Y: z' R, b1 p9 Z' 获取当前目录的 Folder 对象9 U0 g$ a- `( D/ L" n: t& d! p3 y(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)+ f- w9 U6 e! U# h% [+ L(欢迎访问老王论坛:laowang.vip)
6 O9 Q$ h- r' f% r9 ~9 l' 检查当前目录是否包含子目录; Y& ?7 L0 r3 ^9 j0 _$ Z(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders: [: Y6 l _( n7 A& x(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0* p) S7 t* y' A; G. m( X% [(欢迎访问老王论坛:laowang.vip)
9 V. ~4 s6 \: Y0 b) X5 r# o$ ~ S/ n' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件7 L4 C( p1 c2 ]: [(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders
6 A3 _6 K; \7 J2 n% D& U* WIf hasSubFolders Then$ d5 {, h& N: z$ P+ x(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
$ P* ?4 n& F9 V8 a" E$ }5 a$ i1 r! _End If
( z. X3 }8 B0 S. l4 o4 j
) c0 B3 E7 N4 G8 s$ ]' 处理当前目录中的所有文件
1 `0 A) L1 i; ]) X. `9 w* tCall ProcessFiles(folder, newExtension)
, n: ^5 W6 Q# w+ C. F7 |: a* I1 z) F+ s4 r! n& _+ [(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件& e! N, i, b( ]. r/ z, ]8 V2 e(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then
4 Z' N8 p/ g H7 A For Each subFolder In folder.SubFolders
5 o+ J0 z$ b; x5 a Call ProcessFiles(subFolder, newExtension)0 l) i! E: y% c9 k$ |1 G(欢迎访问老王论坛:laowang.vip)
Next
1 s* L* e" D1 Q) zEnd If- p+ e# x5 Q7 N/ l(欢迎访问老王论坛:laowang.vip)
8 g' `1 G5 w6 s. O" ]' 提示用户操作完成
1 L, e4 ~- f' p1 b% JMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
0 B$ k4 l' j* g' c/ b: [" V. i) y* K
( O* p/ _/ Z) @/ x+ K3 c. E4 o' 处理指定目录中的文件的子程序2 C9 Z g4 E! W' C4 t I(欢迎访问老王论坛:laowang.vip)
Sub ProcessFiles(targetFolder, newExtension): v; B# r/ c; [4 T, J(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter* l: f m! ?: N0 d* G+ q/ X(欢迎访问老王论坛:laowang.vip)
Dim nameDict
) C7 X$ @4 L$ t/ [- b. `; G9 D4 Y& A& Q; q. _/ e(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名
0 O! ]& a' y! o; n+ n6 } Set nameDict = CreateObject("Scripting.Dictionary")
* U& j- z7 W# U/ Q, r0 o3 @
1 J* o# |+ J2 M# s ' 遍历指定目录下的所有文件- K5 x8 v0 @/ T3 V9 i(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files
! O) ?+ ^8 ]- I5 U6 K ' 跳过后缀名为 .vbs 的文件& d R7 @& N6 H9 M' G* p7 b(欢迎访问老王论坛:laowang.vip)
If LCase(fso.GetExtensionName(file)) <> "vbs" Then+ e3 ?3 r! v& D2 F) X(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名
; W) u" B+ d& J/ z1 E9 Y oldName = file.Name- K! [+ @6 z/ I2 |5 S(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file). L/ X5 Z- g. @, R7 [" J, Q/ A(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))
+ d' \ N3 s ]" p& }, b$ _+ B" }1 C* Y* `8 w" @& N(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名' P$ ]% G( L2 }2 Q r(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then g0 {, N) m& b(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名
# _& U7 z$ @2 \2 w newName = baseName & "." & newExtension, J% j2 u. {$ k, W, }(欢迎访问老王论坛:laowang.vip)
8 }- d- C, R/ ` r, g ' 检查是否已有同名文件,如果有,则处理重名; o5 Y: V9 T5 ]" F: B% I- v: J(欢迎访问老王论坛:laowang.vip)
newFileName = newName
* f' o F8 x) ]0 _+ u( x counter = 1" o0 A& _$ I/ |: A) V0 @: j$ ?+ R(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一9 \+ K) a5 o& m. O! {4 a/ s. I(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
3 b7 E5 M/ X7 x newFileName = baseName & "(" & counter & ")." & newExtension
! ~) m! y1 P- @ counter = counter + 1
8 B" @/ J. ]8 Z1 \8 ~% z" f Wend
! G- w+ d( _- [+ h: t+ q+ t4 z! F) _( E$ T6 ?: z(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名4 W3 W* w/ S! T5 Y& t(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True
* } e8 T: |' e2 Z( o% H3 o9 K
9 S& `! S( U8 V) J8 z- d8 O" k6 { ' 重命名文件& ^' Z9 S4 A" V( s# N! `6 O0 k* q(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName
0 \, T3 X0 K1 ]4 Y2 p2 _) T End If" ^ o, u$ n# B8 C4 v/ X2 v& G(欢迎访问老王论坛:laowang.vip)
End If3 z( U: P" z# G$ p(欢迎访问老王论坛:laowang.vip)
Next: M/ o1 t9 W1 H% ?/ E/ M% d(欢迎访问老王论坛:laowang.vip)
End Sub8 f N# I: Q( b: Q. ~# ~% T9 Y& D# p! o(欢迎访问老王论坛:laowang.vip)
1 C: A4 a6 G7 X7 G; A
1 V) f/ F6 p+ h; W5 N8 [) z$ Y" ? Q$ s6 `' m' p(欢迎访问老王论坛:laowang.vip)
|