马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买): B# c: `3 p x& `% S(欢迎访问老王论坛:laowang.vip)
, _$ X4 L, Z3 E) n: d( p
( h! @2 v( Q0 _6 d1 m) ~9 L- N1 E' 修改文件后缀名.vbs
* o `1 D2 W" T3 Q0 i, p'
_6 E) Y2 b' Z m' a$ `3 o' 功能说明:: Q* S, |& \; y6 u% x5 s(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
0 c" _ j, E7 J0 B* G5 |4 C' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。3 y9 g* l, F+ c(欢迎访问老王论坛:laowang.vip)
'# C* E1 R2 p* J* e9 V5 R" S(欢迎访问老王论坛:laowang.vip)
' 使用说明:
8 V7 [5 }& a; S; g" e' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
" {, P0 B p7 K- ?% u' D' y" C: v* E' 2. 双击运行脚本或通过命令行运行。
. H9 \. L" R- m3 R' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。1 a8 \; u. _. k4 W" L q& ~(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。2 J, O5 t) V- |4 U5 z) ^* ?(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
: t5 i3 `( V1 R( c: O0 p' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
# r$ c- S) y! E9 N+ r
( `8 n( J5 `% R; w- Z5 ~) c# w( aOption Explicit
' k' F- Y7 `7 ]; f. g6 e- }( d; r. h3 A3 Y! H/ W(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
4 |4 R6 N; |( O7 d. t7 ^Dim folderPath9 l4 P# W7 ?7 Z, R$ g* n(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
: K( h8 `& ^+ p2 s: r' y9 ]% S- ~7 L; C! P, w6 n. \0 ?(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)
1 i& m0 Y2 j, j; B4 @7 c- CDim newExtension
/ A0 ?9 w6 q0 c' y6 Q4 D7 dnewExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
2 l; p# v; g* w, N8 B% y' M; y0 x1 J$ C7 \(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本! w; i+ [" `$ {3 m% g5 [(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then% _1 @, ^% m' ]: I" R$ A(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
% I/ r" V [; f' n WScript.Quit5 ~ ~: n3 D# I& J& Q' z9 f( h' `(欢迎访问老王论坛:laowang.vip)
End If
3 B; N! ~8 d& n) I! m- d; A8 O9 A3 v8 O9 D" w(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.); G* ^7 |3 J/ B2 E" J(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then/ y) {- x4 l6 k/ }8 L(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
7 D& V0 T2 W- w6 I& z WScript.Quit
$ Z6 `: h4 Z. u' P" d# wEnd If
' \" b, ^: k8 R, w |9 R
+ l4 r2 R; r) o& a6 k8 S' 创建 FileSystemObject 对象
6 }& [/ N& F. s$ l8 eDim fso, folder, subFolder
) v) @3 K0 H, K3 Q; zSet fso = CreateObject("Scripting.FileSystemObject")1 _! j, S+ P$ J+ @+ ^* K6 A(欢迎访问老王论坛:laowang.vip)
. q9 y2 s6 [ C1 [+ m' 获取当前目录的 Folder 对象: n( y5 S$ R8 W: ?/ {(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)2 z) m# C1 i" x4 u% h' o5 \, i1 w(欢迎访问老王论坛:laowang.vip)
5 }. r E& E+ ?% \/ f' 检查当前目录是否包含子目录; F5 J) N; I1 e(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders) J6 I( E$ N8 g# Q! n9 ?( |0 Y: a1 ~0 H# @(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0& e1 u6 {! D( f) @' ]) L(欢迎访问老王论坛:laowang.vip)
" ^1 S- Z3 @& X6 l& F+ f' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件7 Y& q" I, x$ t5 l# F# ](欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders% K* [& }$ {9 [+ v(欢迎访问老王论坛:laowang.vip)
If hasSubFolders Then
8 n8 g3 X! O0 R4 Y modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")8 B1 M$ K, y4 C- H% |5 h( H$ b(欢迎访问老王论坛:laowang.vip)
End If
8 }- J, t2 a# w
& E5 }% I, W9 x) ]# b$ Z% y6 y' 处理当前目录中的所有文件
% \4 S, I: ^9 l: FCall ProcessFiles(folder, newExtension)
3 R0 l& |& l+ M2 n; L$ T' L( j' R" z(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件$ j5 Q0 e& c% [- H2 H4 W(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then& _5 K0 Z# u1 E$ \% G6 u- [(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders
, W1 M( U( w) b2 V' y# R; l. @ Call ProcessFiles(subFolder, newExtension)
/ b- R. h V. j7 K) x Next
% d# r; { f: H3 U$ c$ G, P b" Z. k IEnd If% ` R4 \8 ]$ ?! i( C6 d1 `& e* b3 d0 @(欢迎访问老王论坛:laowang.vip)
. }2 v( a9 T3 T4 r6 C" D. S' 提示用户操作完成. W$ o/ q# p1 z# J, G1 M' y9 B(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"9 B2 n2 ~, x7 @. N(欢迎访问老王论坛:laowang.vip)
# p5 d9 I8 n! A+ R- J% |2 x9 r) G(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
. w' A. F! b* O6 C- n0 RSub ProcessFiles(targetFolder, newExtension)
( f3 `6 X2 s" V; d9 F2 g o/ d Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
$ E6 N* h6 F0 B7 t$ W Dim nameDict
5 {7 ^; h n0 ]
' ^ Q/ q! o8 ~ ' 创建一个字典对象,用于存储当前目录内的文件名: n8 z! R" V# O% h(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")
) k2 F0 }5 {% U3 w8 B8 n5 j1 b3 q5 f( Q- T9 m# c5 o9 r(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件
/ g/ @* u/ x1 j/ b For Each file In targetFolder.Files
) ^2 {6 m$ z6 r+ R ' 跳过后缀名为 .vbs 的文件 Q% b( P0 L& e3 F5 V(欢迎访问老王论坛:laowang.vip)
If LCase(fso.GetExtensionName(file)) <> "vbs" Then
/ m) U$ u- T# \+ }1 P" t ' 获取文件的旧名称、基础名称和当前后缀名. _" t/ _8 {) B(欢迎访问老王论坛:laowang.vip)
oldName = file.Name
* R2 V8 W: P+ [ baseName = fso.GetBaseName(file) C3 w6 U! I1 b- W1 G# q: C5 ](欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))1 j. F, p' M& J(欢迎访问老王论坛:laowang.vip)
7 C4 W( u+ I. z9 v. g& T(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名, N9 i8 i# q( \5 x/ T8 g(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then
5 ?4 u. E0 q3 t) V, ]& Z1 M+ h7 w ' 创建新的文件名
3 [% C4 w- ~( r' N& u8 n newName = baseName & "." & newExtension
2 y# D, n. I8 w2 d! A, Y
. Q" `$ l$ I2 O# n# N ' 检查是否已有同名文件,如果有,则处理重名
9 ^, C( r2 x0 n9 K' |4 z newFileName = newName7 ]* V$ `+ L; Q9 {(欢迎访问老王论坛:laowang.vip)
counter = 1
0 D5 E9 N& v* f; K5 \+ x4 C+ f3 P8 t ' 确保新的文件名唯一6 y: ]) z% L3 G2 { a' s a1 Z( u# d(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName), q" W* t6 }' v. C2 K(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension. L. t* s; I9 k(欢迎访问老王论坛:laowang.vip)
counter = counter + 1
( a" p" H. H7 j' c% ] Wend
5 [- `" B x' S/ V
/ x# s$ p! `; M ' 记录新的文件名$ Q& h( k0 f# r8 I6 W(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True
' |5 M0 q- z j& u* @$ `0 }" @1 U3 \. ~, U ?0 y' s* ?(欢迎访问老王论坛:laowang.vip)
' 重命名文件
$ [/ V/ B$ g) n$ G% [ file.Name = newFileName
5 t" |7 A* E, L3 T5 h- N$ Y) G End If
: ]1 u) [6 u7 @9 M( f End If" j @: j# Z) e. I+ W(欢迎访问老王论坛:laowang.vip)
Next$ ]0 Z, f! n3 v9 J(欢迎访问老王论坛:laowang.vip)
End Sub% F% n6 @& B6 D2 I(欢迎访问老王论坛:laowang.vip)
: ^; @7 T) l) f* N" {$ B1 G(欢迎访问老王论坛:laowang.vip)
8 d8 G& d& m- R+ q9 }- A8 O3 F( \; X3 w& d* P(欢迎访问老王论坛:laowang.vip)
|