马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):' U% I- g5 I5 m, ]: s2 Z: x(欢迎访问老王论坛:laowang.vip)
+ M" C4 f9 W3 |& @8 e+ t! {( i8 `) T. D(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs
2 k5 c3 A8 u4 R+ Z/ W'9 j2 G9 C! _. r1 S0 o(欢迎访问老王论坛:laowang.vip)
' 功能说明:
+ f% a& `, x: T/ t! k' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 q/ Q" Q. N, }6 x+ t2 j(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。 E8 i/ [1 m C/ j! V6 ]5 d(欢迎访问老王论坛:laowang.vip)
'& t6 n& L: T( ~8 E( ]+ y- N(欢迎访问老王论坛:laowang.vip)
' 使用说明:3 W; j) x# K2 i' a* S(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
( [6 W% l0 Q5 _+ n6 z7 s' 2. 双击运行脚本或通过命令行运行。$ p' G, x ^- m(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。" ~: A. f* z* V: ~9 C+ c2 H* \(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。9 v7 m; J9 Q+ t8 R! G; G7 O3 f(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
7 \* o" `2 |$ g) @0 N/ C9 z" W. ^9 g' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
9 g: Y! b( P) P: H7 q" O
1 L; S" D( \; z$ `( H, @8 C6 dOption Explicit
* Q2 h. a0 L0 ^: i' Z* p
" Q; d) n [8 O# m4 A# q' T' 获取当前目录的路径
% ~/ Y4 ]3 r/ c; W) i4 ?0 aDim folderPath
1 ^1 N I( v% f2 efolderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")7 B d& T$ w) Q# `& N0 h& E' P(欢迎访问老王论坛:laowang.vip)
7 m5 d* W" D3 Y% c3 K) r2 q(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)
N. J; `" Q8 u6 \6 T, ?8 fDim newExtension
* n& Y0 N+ R$ ]7 r7 P! V* NnewExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
9 ]' e+ V5 \& u# X9 P3 f Q& M t) V; F6 m+ F(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本
# }) W q$ i9 X. N- @8 |. ]If newExtension = "" Then" m" m' X+ R# K: f(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
' e& Q5 z& _# x6 N$ Q7 N! d/ d WScript.Quit. l6 h$ S4 g8 e9 I0 K0 |(欢迎访问老王论坛:laowang.vip)
End If5 Z a; l3 l d& Z! ?& C(欢迎访问老王论坛:laowang.vip)
! h) s" X( x3 G0 `(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)
3 O' q) W1 T: p& R8 J# yIf InStr(newExtension, ".") > 0 Then2 B G7 R: w6 L. \# g% T(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
8 J* O) A8 s0 q" Y2 D; v9 O2 w WScript.Quit3 I# E9 B4 g/ |8 S7 Z0 q(欢迎访问老王论坛:laowang.vip)
End If
% a7 |( w" m; r' |3 e9 M5 i
1 }) `- b( E2 ~7 }/ z% M, W& I* @' |' 创建 FileSystemObject 对象1 x* J5 K! L, [8 a% G(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder0 O! Y) A) @8 E4 Z6 Q(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")6 W, b4 H3 t3 N, \8 T+ p! F(欢迎访问老王论坛:laowang.vip)
* |+ u0 |0 |5 F7 R0 I1 Z; D(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象 t# h$ Z! v+ {6 A5 y# B) O(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)- z& d7 ]0 O; Y7 @. C; |. J w(欢迎访问老王论坛:laowang.vip)
* A: R% h |& G! x(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录1 _ k2 I, u( o(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders- W. Q f% s! ]0 F5 g) Z(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0
& ]* D1 r M7 a9 Y( M7 q7 B9 K" ?(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
0 L! ] O. I T7 iDim modifySubFolders
9 F. e3 @, j* B6 R* `8 a s Z. TIf hasSubFolders Then( I# {" c; }+ I(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
9 k( v$ W* A/ v5 S0 hEnd If5 s' L, S: l8 i: I/ a8 M; a$ T(欢迎访问老王论坛:laowang.vip)
& R8 D1 b( r0 q4 _0 Z(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件
& o! x# w3 `9 o n3 cCall ProcessFiles(folder, newExtension)
: b' A4 C# _" x% ^ T5 E
- ~2 E$ N6 Y1 ]# ~' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件- E% g; W# s `" U) `! c4 c7 T(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then
# V( [# c* A% W p$ N For Each subFolder In folder.SubFolders( \/ k& G1 D8 K! T2 a0 S(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension), W/ i# G3 p& F, _: k(欢迎访问老王论坛:laowang.vip)
Next
- y0 s7 g5 F; R/ a' L0 P8 VEnd If3 Q- k2 r# H0 _; M(欢迎访问老王论坛:laowang.vip)
4 {2 I. |& ` p' 提示用户操作完成
% o1 T- [( b P/ P5 c& L0 d( \7 IMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
" C' E5 e- }: C3 h
# O4 c6 y. j9 P% j' 处理指定目录中的文件的子程序
0 v/ a/ W8 g1 _- L6 e5 Y/ bSub ProcessFiles(targetFolder, newExtension)
) ]9 B/ f9 P) b% _% @2 `5 D* @ Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
7 n4 B, _$ l3 b7 {( i5 { Dim nameDict
8 F; D8 h4 D+ [- K0 T! G/ {
! F. B3 }( j7 V4 G i$ `% ` ' 创建一个字典对象,用于存储当前目录内的文件名. m B' @9 a+ h8 B' X(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")0 J/ C8 r5 p8 M6 v6 \# W(欢迎访问老王论坛:laowang.vip)
! P+ v. n/ F5 l7 b ' 遍历指定目录下的所有文件) B2 q: D3 P2 B2 m# m: ^! S* x(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files! X6 L. U4 K0 _1 j# c3 l0 V7 [. a(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
K* d4 T$ a, ?$ V) X2 P If LCase(fso.GetExtensionName(file)) <> "vbs" Then+ E% B4 w, I/ s# } J(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名
3 W9 ~" v, J4 Z5 k oldName = file.Name9 P0 c% f! a8 E9 n# u' t& F% p* M. d(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)9 U- u) I" R' g1 S- c; R4 x# M(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))
- j8 \3 n5 a' U W( @5 j' |% j(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名+ W2 \1 d3 a/ Z(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then7 ~. o8 x! u0 D2 M5 L1 F, J7 G( Q(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名# ]" _% M9 f* q7 U$ v! X( Q(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension" }3 y/ a. o8 g(欢迎访问老王论坛:laowang.vip)
7 h! }+ A- r2 | ' 检查是否已有同名文件,如果有,则处理重名0 E7 `1 a4 E. O! ?( A(欢迎访问老王论坛:laowang.vip)
newFileName = newName8 H7 W, D M0 q; s) O% h/ v9 C* }5 X(欢迎访问老王论坛:laowang.vip)
counter = 1
% }, F# u+ t; F7 r' V ' 确保新的文件名唯一. c: h) ?) {3 C/ D# B& u7 _( U(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)9 F5 [ S8 R3 p! i4 y" z(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension$ E0 M3 f- [# u. S(欢迎访问老王论坛:laowang.vip)
counter = counter + 1
$ q" F9 f) }/ N" [' E9 {$ M8 w$ K Wend
6 w- a w" X! ^% J, i
( L5 R7 _& p! A6 M# h4 M: [; p ' 记录新的文件名
/ h; w9 b* {0 T# `7 [ nameDict.Add newFileName, True" I0 T x2 o2 v2 x/ m' Q9 h% k5 S(欢迎访问老王论坛:laowang.vip)
) d7 `! Q3 H8 N8 }; b; ^( f& F(欢迎访问老王论坛:laowang.vip)
' 重命名文件
; r9 B) s2 z8 F file.Name = newFileName
, |& O$ U: |5 M% E/ [ End If* p- @' N6 c3 f7 Y& Y(欢迎访问老王论坛:laowang.vip)
End If; a' _ ~ i7 M& f) i' j+ M( M0 ?5 B! C(欢迎访问老王论坛:laowang.vip)
Next; Q! Z1 V1 V3 X1 E- S5 Y0 E0 v! l7 q4 j(欢迎访问老王论坛:laowang.vip)
End Sub, Z/ n7 _, A9 u+ i+ p(欢迎访问老王论坛:laowang.vip)
+ F) F4 ~) [ f1 E" z" `) D* P% A4 c% V" L* C _(欢迎访问老王论坛:laowang.vip)
$ x" |' o7 T5 r% l+ c# |( d( z(欢迎访问老王论坛:laowang.vip)
|