马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):% s% t, Z/ h) H7 q a% H- d(欢迎访问老王论坛:laowang.vip)
* O) n. k, P$ i: t4 S5 H! a6 |8 k( y* ~(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs: v& L- |! \& l* l4 ~(欢迎访问老王论坛:laowang.vip)
'0 S7 [! ], ?7 M3 E2 t2 d1 v(欢迎访问老王论坛:laowang.vip)
' 功能说明:) J3 I }/ T5 G% k% j8 i1 ?(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
) |0 r! Q: M& q" N) B) O ]4 |( B' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。8 z* W9 j+ v$ E; U(欢迎访问老王论坛:laowang.vip)
'- [. ` }% A7 `; ^4 _7 U/ D(欢迎访问老王论坛:laowang.vip)
' 使用说明:1 k' p0 L6 t) b2 @(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
/ ^7 v0 E5 i0 ~- c8 ^" {! x7 [' 2. 双击运行脚本或通过命令行运行。4 C4 `" t) w# n) @0 I0 ^(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。0 C" [" e7 _. y; ^8 p(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
N' S8 d' a* ?' k4 e9 y' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
' u# y# _0 m8 F3 ^4 p0 S( A. Y' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
; ?+ i3 X: X( l2 g2 c
8 J1 T3 J5 g! O# AOption Explicit
. L* v, ~* \2 j3 S' g2 _3 d2 y% E/ _; n1 m Q9 D(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径0 C- |% s G" j+ N(欢迎访问老王论坛:laowang.vip)
Dim folderPath- ]2 J$ y1 E! G(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
6 @6 i/ S4 J. u
3 g+ B( t, v9 R$ f' 获取用户输入的新文件后缀名(不包含点)2 k$ F* G: D% ~3 z: h( p x(欢迎访问老王论坛:laowang.vip)
Dim newExtension4 b& y. @: l7 f2 i(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")% E# s; @# Y8 {9 m8 Z(欢迎访问老王论坛:laowang.vip)
3 q4 {# v0 @2 P+ L+ I% C# J' 如果用户取消了输入框,则退出脚本
8 R0 z) O0 k6 aIf newExtension = "" Then% K4 N. V2 X- c& H8 {+ }(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
, V+ B1 I, k& |; L0 ~5 D4 b! L WScript.Quit+ x% H7 a4 s0 u! p- z1 b3 s5 Y- K8 }(欢迎访问老王论坛:laowang.vip)
End If8 {; J7 b# Z! r" W; K0 _4 S(欢迎访问老王论坛:laowang.vip)
/ V! I" q0 _1 p! R* e' 确保新的后缀名不包含点(.)4 l8 n5 [% G2 a2 r(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then$ a5 M$ O, m6 p& W(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
1 U) j O2 P8 w( U5 [7 H+ ~# ]% l WScript.Quit. P7 o( C) y% ^, E(欢迎访问老王论坛:laowang.vip)
End If
4 Z/ r8 C( j0 ~9 e7 c1 A9 C4 X0 M* y8 ^& P! U& @(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象
6 U% Q( X) i7 k, Z7 @Dim fso, folder, subFolder; w) g0 f. Z- @( n% O(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject"), G& S9 ?! Q+ Q$ T& M V* {(欢迎访问老王论坛:laowang.vip)
' V2 O4 G& U+ q, i1 b' 获取当前目录的 Folder 对象0 C6 V+ X5 \9 |3 ?% p+ X(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)
) s$ H8 I& B* e1 f5 O& _8 S7 t7 ?(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录
4 Q: S* Q0 L$ d" p% |7 n1 d, v* g% lDim hasSubFolders4 p. L8 X" D+ D) C0 J# D(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0+ K& m* B) p1 H9 ~8 i1 o9 F. U(欢迎访问老王论坛:laowang.vip)
9 [; ~1 A3 b4 E8 J" B# X/ n' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
# W C: G+ C, ODim modifySubFolders
7 \; y3 [& h, Z8 D/ pIf hasSubFolders Then0 E. x2 S+ ?1 o8 F(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
R; j" u( e2 D& v* W2 F c) GEnd If, p) m0 X6 k, C) y/ \5 F3 w(欢迎访问老王论坛:laowang.vip)
2 r3 v5 }, a" v6 w' 处理当前目录中的所有文件
9 S9 J. Y1 B3 J% X: aCall ProcessFiles(folder, newExtension)
* o3 @7 q. |' Q) j& F% O+ N! y5 }, {4 j" Y/ @/ V, E(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
1 ^0 c6 ]! R1 z- r mIf hasSubFolders And modifySubFolders = vbYes Then8 G# L) O- D2 M(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders
, l" ^& L; `7 w& q$ R$ S: a Call ProcessFiles(subFolder, newExtension)
+ j. G6 `; o# F+ u$ Z; ? Next
0 h2 V. ?! ?2 _) kEnd If
& O4 S: Z: m% v/ }9 V2 z
4 K8 d5 B y& }6 l' 提示用户操作完成: d+ @+ W/ ?3 l5 s6 J/ C" m(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
' P2 G& s3 w, ?% F8 s+ H2 {% N; W" z(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
. }5 c" _1 k, U; ISub ProcessFiles(targetFolder, newExtension)1 x- E% z+ s) i8 r- c5 b(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
6 E5 O+ i) m4 P' \1 y J Dim nameDict
$ r4 Q9 D7 A9 j& {& o6 p& u9 E* k4 E$ r. E(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名1 ^% i( |+ a+ _0 C9 g9 M0 R2 m! F(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")3 x/ O2 Y: }) c4 G(欢迎访问老王论坛:laowang.vip)
& p0 Q9 H2 L& A+ O+ r- k3 t(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件
; i, X( y% j; v9 X; a2 ] For Each file In targetFolder.Files" @ |: h" U2 R7 c! d(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
+ O1 o/ m2 T! _+ j1 c. c9 W( E If LCase(fso.GetExtensionName(file)) <> "vbs" Then
) m0 o0 U D: f' b+ Y9 v: T ' 获取文件的旧名称、基础名称和当前后缀名
- D9 L, O0 c1 b0 N h' ?0 f% G1 W3 p oldName = file.Name
5 W% ] m+ O0 w) T0 R7 Y baseName = fso.GetBaseName(file)8 ]* b; n7 ]$ z W(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))" b7 ` J6 h: `+ H' B(欢迎访问老王论坛:laowang.vip)
! |& a: Q7 N: {/ N6 M9 S# g(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名
X: G c+ y8 O3 w; Z" {4 n If currentExtension <> LCase(newExtension) Then
8 k# h. w+ B4 n% f( {. e8 V6 d3 X ' 创建新的文件名
8 h2 d8 `& j, ^ d newName = baseName & "." & newExtension
X# j1 y0 v1 k( ?" u& M5 e! K" {% m' ^(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名
h- s& v/ m9 \! f8 E newFileName = newName7 I2 _- t+ `' v( M& g* v& P! U4 Q(欢迎访问老王论坛:laowang.vip)
counter = 1( B k8 [2 U5 s. L4 n(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一
6 q z% j j9 W1 s While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName), B8 m( _% ~9 h$ E& y! |1 ~2 ~(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension0 q% j1 \6 o* K0 m n% r& j7 b( N" Z(欢迎访问老王论坛:laowang.vip)
counter = counter + 15 `$ n, u" ?# u0 c# u(欢迎访问老王论坛:laowang.vip)
Wend
' B2 W! {9 j3 r3 m- i6 S4 R' Q& [7 O$ v(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名, Z2 F; S: B( t0 y" C/ Q# y(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True8 S. [3 h! `3 E- ]: x6 b(欢迎访问老王论坛:laowang.vip)
U6 p: E5 |) @ b4 s( R' f; X(欢迎访问老王论坛:laowang.vip)
' 重命名文件8 t7 ~$ p$ [- L. m+ I6 R3 a* `(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName& S c" U( K6 L' Q(欢迎访问老王论坛:laowang.vip)
End If1 A8 `' k" i% D* n7 c0 x, K, Z(欢迎访问老王论坛:laowang.vip)
End If2 Z F; X' z" k# d, n5 p(欢迎访问老王论坛:laowang.vip)
Next1 S! E, U# d1 G/ V. T(欢迎访问老王论坛:laowang.vip)
End Sub
/ w% ~5 |% i; C: a7 n F
, d6 d F; Y$ i0 o( b/ X9 y0 s; P% b( y(欢迎访问老王论坛:laowang.vip)
$ T5 T* C: h4 c- u |