马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):* Y% C* `2 U0 t: V6 Q(欢迎访问老王论坛:laowang.vip)
% D9 G/ o7 T, V: B* L' D# C(欢迎访问老王论坛:laowang.vip)
3 q6 Y9 m. M9 C* C% F% O _$ Y7 J(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs
7 W! o6 A& @8 s2 a'9 p! t7 W% f" w: D" I, U) ~$ P: j: L(欢迎访问老王论坛:laowang.vip)
' 功能说明:
; [1 `) w" J9 [% Z' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
: v' A8 v! J. U* I- C/ E2 i' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。
/ X1 _$ o# v; @( w/ w'1 S1 l c% a- J7 g(欢迎访问老王论坛:laowang.vip)
' 使用说明: h' h y3 z9 n, t6 `, l8 ](欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
% I6 p! {& l; i: Y, D+ ^' 2. 双击运行脚本或通过命令行运行。% ?: A; o$ x% r" e: j, M) w(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
) A# \9 ?8 c' E4 y8 ?' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。) Q0 }7 y1 h9 m" U6 {; `9 _2 n+ U& Y(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
: \- x& n. A: e0 V' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
* S) m* @/ ^* l$ y8 b" _# K6 D {- q Z; _* _3 ~/ w6 f# ~(欢迎访问老王论坛:laowang.vip)
Option Explicit
( D: z1 G: ?1 _4 M3 z7 O7 E$ I8 L: T0 T(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径8 B; F& S1 R {5 }# V(欢迎访问老王论坛:laowang.vip)
Dim folderPath
3 {/ F: b& M8 C% A; }( {. P2 M+ wfolderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName("."); g7 \) y' X: i" a3 ^(欢迎访问老王论坛:laowang.vip)
+ O" ~: H" ]8 W: b9 _(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)3 ]7 M1 v( V0 o(欢迎访问老王论坛:laowang.vip)
Dim newExtension, L1 L" i; E$ b8 M(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
' X+ Z2 b: j- ~: ?8 C. y/ a
9 h3 s; C+ ~+ o/ ]: E8 q' 如果用户取消了输入框,则退出脚本
! y+ i+ e v' B+ IIf newExtension = "" Then' M2 k2 X1 W# ^9 u x3 i(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息": Y% |, u" U! f8 u$ ^& {(欢迎访问老王论坛:laowang.vip)
WScript.Quit
: a) O! |4 x4 k2 y! QEnd If! S$ D3 p1 w" {$ n( o6 y(欢迎访问老王论坛:laowang.vip)
2 r Z9 g+ ?7 \& C- E' 确保新的后缀名不包含点(.)
# h+ h& k: J4 q: s0 _& FIf InStr(newExtension, ".") > 0 Then
: F- o1 m- q4 t/ O4 g MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"; n6 h' [! P4 \# Q(欢迎访问老王论坛:laowang.vip)
WScript.Quit
/ o/ I# U. w$ k2 k, e7 w4 G( ZEnd If
4 I7 o5 U- q+ J. o1 A! ?6 y. |5 [8 o- n T& u& Z' K+ C(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象
9 z% _8 `" Z) i/ Y2 _, y% Y. ADim fso, folder, subFolder6 V1 }% p; z, D3 [(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")
! @# Q4 W# P& U/ T5 @/ ~/ g Q0 v
3 e/ K- u3 \2 C# ?% B' 获取当前目录的 Folder 对象
; n) w3 U9 P; u; c wSet folder = fso.GetFolder(folderPath)9 V0 I1 I5 L6 k8 s( @6 v! a( \(欢迎访问老王论坛:laowang.vip)
( u& M1 O6 ]# r r(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录/ J5 [# F: }; T0 g2 n& d. s(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders1 ~: Q# Z5 p- G% n' v3 W# m% S(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 04 \+ X$ T4 [; B7 a0 M(欢迎访问老王论坛:laowang.vip)
0 e9 C! \7 U% @6 `5 x' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件8 [* f4 C1 |. g4 ]" ~$ y, i(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders
" [: A2 p5 t E2 oIf hasSubFolders Then
6 {5 V* E9 m; S/ n8 b0 J modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")6 X$ ^% _( k4 _# |- F0 c k(欢迎访问老王论坛:laowang.vip)
End If6 n) b4 X. ~9 ?2 `2 U2 r3 U& T" b9 _(欢迎访问老王论坛:laowang.vip)
) \" V" d4 {3 t6 a) Y4 S! [& o(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件
4 ]- y8 n2 M$ f" RCall ProcessFiles(folder, newExtension) O3 _4 o% \. K1 m$ t! y(欢迎访问老王论坛:laowang.vip)
" ?- X% Z9 T6 M4 ]1 q' Q! I(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件8 q, ]$ _' c6 O& Q) ^7 L(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then8 ?0 t$ _. c/ C: I* d* V; L7 p(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders3 C! y0 V% f3 [: S7 Z(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)
* t1 P c ?. C* E; ~8 m Next
# ~* F D1 f5 `+ U" sEnd If
- s9 @) n2 x9 s( c W: U% Z. r/ r/ _5 a& v* m- }6 [( b. z" x(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成
! }' a: C5 L5 `2 mMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成": g# h% f% h/ Z" B0 L4 U" k4 w( l; [(欢迎访问老王论坛:laowang.vip)
5 @* h( [9 E' G4 [; n' 处理指定目录中的文件的子程序
; e( u8 i6 b+ q" NSub ProcessFiles(targetFolder, newExtension)1 Q" M9 W, a& r5 ~0 c# L. z9 `, t(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter) }. Q, l1 S& K; u5 h2 g(欢迎访问老王论坛:laowang.vip)
Dim nameDict# o- J9 v- |1 ?8 v* v7 D(欢迎访问老王论坛:laowang.vip)
' y; e1 R! V ]$ C/ k3 I( K(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名! }, w* Z0 V* E1 Y" W(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")8 S' C% z! w8 h9 ?( i; T# `) y(欢迎访问老王论坛:laowang.vip)
% r3 l9 l) V1 ] ' 遍历指定目录下的所有文件
8 h7 n! K! ^' e7 u For Each file In targetFolder.Files/ X+ H" j% Y" a8 N(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
5 B" _! G0 E4 S If LCase(fso.GetExtensionName(file)) <> "vbs" Then
" u! B, _7 W( v' D/ O" Q) P4 y ' 获取文件的旧名称、基础名称和当前后缀名
n0 y: V( M4 Z. W% o oldName = file.Name1 v/ V. @+ q% J6 P* o(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)0 _0 d' D; E# H) e) U(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))" _8 ?: C( L( T(欢迎访问老王论坛:laowang.vip)
7 X5 Q7 ~: H; h. [6 V(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名: Q: I6 M' P; O( P( d0 P1 {4 w(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then
4 ?6 B- z# ^2 t) Q2 A ' 创建新的文件名
- u4 R, ?' Q" g3 D* K2 N newName = baseName & "." & newExtension
/ {* ]& Y/ w# R
% a! S, R- k3 t. s" M$ f4 b& a( w ' 检查是否已有同名文件,如果有,则处理重名
( d; G# ?) Q8 K5 o; v$ O$ x newFileName = newName
0 ~8 `: G* t0 M5 \5 H2 u; K( N counter = 1( B$ f4 D' d+ }9 ~- V3 X" h0 b6 p: ?(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一
/ I( H8 k$ g% h' d While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
4 G2 c" o# T" ?0 I newFileName = baseName & "(" & counter & ")." & newExtension
2 V9 \- k! E, q& I counter = counter + 1% J( c1 B/ M9 G& ^/ R( l(欢迎访问老王论坛:laowang.vip)
Wend* I! \: M. b" [6 T$ Q8 N(欢迎访问老王论坛:laowang.vip)
1 S8 u% J+ W6 _6 b3 v% k$ j7 z(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名
! _: G, `. _1 V! P! W( t nameDict.Add newFileName, True" H! g% u5 B6 _3 u( `2 R0 d6 M0 q- U(欢迎访问老王论坛:laowang.vip)
) K# Q) Z; f0 } ' 重命名文件
J8 C& E1 `+ D% ^ ^ file.Name = newFileName
& I+ B. l5 w0 q3 p# c End If! f7 k5 A6 W$ O3 R(欢迎访问老王论坛:laowang.vip)
End If6 O% d/ z1 _1 Z2 R9 X: K2 O) k(欢迎访问老王论坛:laowang.vip)
Next' j6 p# M5 z& r" O% ]2 P(欢迎访问老王论坛:laowang.vip)
End Sub5 M" k% Q" F- u9 M2 z(欢迎访问老王论坛:laowang.vip)
5 K6 O) w/ f/ A! k7 R(欢迎访问老王论坛:laowang.vip)
; q/ }- W% z: R7 k4 j0 G(欢迎访问老王论坛:laowang.vip)
6 u' \# f% o7 J* f4 ?(欢迎访问老王论坛:laowang.vip)
|