马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
1 i! R% u) {- n2 ?
/ l) K5 `. R8 j! E
( R( L$ w& m( o' 修改文件后缀名.vbs& |$ r+ `7 q+ x% l0 ^, {9 g(欢迎访问老王论坛:laowang.vip)
'" U1 P/ \& M/ `0 h: i(欢迎访问老王论坛:laowang.vip)
' 功能说明:" w1 `6 v2 V ^( t; O) U# B8 V(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
% U" I' P4 F2 g. a1 I' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。+ X6 j' ]% L! @ z6 y(欢迎访问老王论坛:laowang.vip)
'
; A7 I9 G1 |1 e% u' 使用说明:
& i/ ]2 p B* l/ `' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
( _/ q2 l" ~5 H( K' 2. 双击运行脚本或通过命令行运行。
; L% z$ }+ U' J- `! q" k0 D$ _* ]' I' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
# {. Z* t: F6 U" v8 j' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
$ _9 x/ B' A) i2 d' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
7 E" q8 o- j3 U4 V7 V1 m3 A; L8 y. m. N' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
; v+ i( b4 d/ O7 d d" x
# a4 {6 O2 R$ P6 h9 @" ROption Explicit3 y1 j5 H( p* b- A9 b, _(欢迎访问老王论坛:laowang.vip)
' j( ~) `* n' M/ h* M' 获取当前目录的路径
" U9 S& C+ N+ y: Y! ^# p! sDim folderPath# d# g2 U- r- j* g/ S(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".") k% P5 z& m6 _3 Q- L(欢迎访问老王论坛:laowang.vip)
% c; m v. c4 w$ f' 获取用户输入的新文件后缀名(不包含点)
# C/ h$ d! Y' e, Q2 L9 V# [; qDim newExtension4 @5 I& B# z! o1 V w3 w/ g(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
" `4 V0 Z+ u$ d8 ]5 V9 v+ V. P0 M2 q: _(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本
$ Z' n. d! S7 jIf newExtension = "" Then
4 ]! c$ l% ^: i+ w% j7 W2 k MsgBox "操作已取消。", vbInformation, "信息"
7 |- A: p- |7 x. o( B+ z" U WScript.Quit1 L4 L% @! N* a, C(欢迎访问老王论坛:laowang.vip)
End If
1 i7 _8 U' a6 O4 q0 O( v; D! U$ {1 m0 {% r, N(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)! m9 i1 _; W; a S0 L9 q(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then
6 G2 d7 E5 |8 ~* S ~ MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
* x5 g* }8 S& M WScript.Quit
2 Y, @7 C# z4 p# U2 F1 JEnd If* `. j' w& I( d0 j7 X(欢迎访问老王论坛:laowang.vip)
. i* ~; ?# J% _9 n) u" a' 创建 FileSystemObject 对象
3 Y; t, H: l+ m4 Z# N5 nDim fso, folder, subFolder
: i& m3 A* y1 D9 M% I4 USet fso = CreateObject("Scripting.FileSystemObject")8 G0 T$ u" p1 j( b1 _4 F; n4 w(欢迎访问老王论坛:laowang.vip)
4 t/ ?% |! F* c# M) P8 i; z( v' 获取当前目录的 Folder 对象
8 |7 o: y; |* I- ]9 c$ wSet folder = fso.GetFolder(folderPath)
5 x" \8 b1 k) ~* R" F9 @& S, {( d7 }& S# R( q) x0 H(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录4 `9 V. o9 W) E(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders) ~5 E. G4 [# H H9 A3 j2 }(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0+ Y2 J: T$ o+ f' I% f, a(欢迎访问老王论坛:laowang.vip)
& F# [6 d1 M$ V( F; ~# V/ A# l' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
# I3 `, q# G# B7 s1 ?+ }, i4 kDim modifySubFolders
8 r0 ]) h9 f1 U: s8 SIf hasSubFolders Then
7 p6 Y) ]7 }: @0 q) c6 {- K9 } modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
7 G/ q$ \$ r r8 uEnd If& w4 @+ W' Q2 K/ o, ~(欢迎访问老王论坛:laowang.vip)
! d6 E7 p8 M; ?$ c' 处理当前目录中的所有文件- i! T8 J4 ]9 D7 t, z0 G( m(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)9 o, w( K/ Y; E9 ?9 i, J(欢迎访问老王论坛:laowang.vip)
# G+ G, D }# o- K- x$ X: b! z1 q! c' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
" R) p9 G& ]( s5 O; `If hasSubFolders And modifySubFolders = vbYes Then! n# ^: v9 @) G$ G(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders2 ]+ e; E) N2 J7 d: |# A(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)5 `, v1 X6 y% N/ G! m5 O(欢迎访问老王论坛:laowang.vip)
Next9 r: c6 m% H' \ K(欢迎访问老王论坛:laowang.vip)
End If
7 @" \7 ~& h, M3 _$ Q1 c- f" I. ~' p9 W( R3 }* M, e X(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成8 H( G: ?) D% z: S* L; I(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"( F: i8 {$ w& _0 z* Q; \# b(欢迎访问老王论坛:laowang.vip)
( m R0 k2 f+ R0 x$ J' 处理指定目录中的文件的子程序
5 `" f% A' c& V G g! K, o/ r9 JSub ProcessFiles(targetFolder, newExtension)
" G" p8 h* P4 y) c- F0 i' I Dim file, oldName, baseName, currentExtension, newName, newFileName, counter$ K. B/ d9 {/ }, @) ]- K* R(欢迎访问老王论坛:laowang.vip)
Dim nameDict
' c: j" y! f% }. B2 |& p! {# M8 d0 I( D' i+ T& M- d1 e& s. ?/ d(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名& f: f# t! E3 \9 V% L(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")
/ @: s& C- e( l P5 z" m! ?$ h+ {% J4 k(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件
! [) M" g9 w/ c J- T( L For Each file In targetFolder.Files
* _, k9 A! Q4 P8 d8 a ' 跳过后缀名为 .vbs 的文件
: x& {8 h. _( J' j! L3 c/ p) K If LCase(fso.GetExtensionName(file)) <> "vbs" Then1 y' j( {, l/ t' q% P& T(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名8 c, e7 N1 g% z# {/ u(欢迎访问老王论坛:laowang.vip)
oldName = file.Name
+ Z1 J9 Z/ Z) N baseName = fso.GetBaseName(file)( Z5 G4 w# A7 j& R7 |9 X(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))
9 [3 z2 U8 R' P* }' C8 } M, Y9 S9 [) N5 R2 K/ d(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名
" N) y6 N- G/ L& W/ ~5 u If currentExtension <> LCase(newExtension) Then( v" C& h/ L5 @8 l, l/ B9 U(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名8 J1 m" z3 L! C! V) I t- M- d(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension) I5 J2 ~1 g& u0 ?& x& c(欢迎访问老王论坛:laowang.vip)
, h l }2 n3 o8 e0 _# }(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名
) c8 y# D: u% w& s newFileName = newName
- ^1 h: \+ T$ h. `' T& c- M- C5 b8 n counter = 1% K6 V; t: S6 Z* ](欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一
, I/ f. |! H# {4 [9 j' p While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
1 c5 o P3 C4 e: M newFileName = baseName & "(" & counter & ")." & newExtension- N- i5 s1 V) f(欢迎访问老王论坛:laowang.vip)
counter = counter + 1% D9 R& }7 S2 M& d4 f(欢迎访问老王论坛:laowang.vip)
Wend
/ R2 Y) t8 N* z! O' B1 m! B; m
$ U. Q y7 o) N' Q5 L ' 记录新的文件名+ ^, r1 H# U# z5 d' S7 J/ E0 F+ O(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True, J* m& j5 a/ i0 z$ b9 W6 D9 v& P(欢迎访问老王论坛:laowang.vip)
: [% _+ {3 d; F6 f. ~& x8 Q; h(欢迎访问老王论坛:laowang.vip)
' 重命名文件+ x# ]5 b- \3 C(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName; J4 m+ P- C5 a; _1 [3 b5 h(欢迎访问老王论坛:laowang.vip)
End If
9 V. m1 q" P1 v! V2 b1 j% L End If
6 m) ] Z N# s Next
. R- t; a7 r/ W1 P& CEnd Sub
; N7 D; R: I s) e9 E8 X1 ^) l! `(欢迎访问老王论坛:laowang.vip)
8 h9 c9 M* n# N7 E
8 b! [0 v, @" n0 `* C1 H/ i |