马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
$ \8 t, U# D' m. M- A r$ O. [$ F: ^; Y! R) N/ x2 g6 { H9 [(欢迎访问老王论坛:laowang.vip)
Z$ f% V7 P8 M(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs
9 B* m5 ?) z% E'/ q, Q7 r* j- |% X4 ~4 O(欢迎访问老王论坛:laowang.vip)
' 功能说明:2 ~+ l9 J$ d% J2 N(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
/ g- b1 k, w3 C" e7 ~1 R" J6 A% G' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。) }3 G0 d- ]0 q, y1 M(欢迎访问老王论坛:laowang.vip)
'* m4 _ v6 o# j. v(欢迎访问老王论坛:laowang.vip)
' 使用说明:
$ P0 I2 z* m+ W* j$ k' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。1 B3 a9 v; I8 V- H2 s(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。$ |, T# a5 R8 o% H `/ h(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
2 ]6 P$ N$ k7 W* Z i/ D3 K, F; @' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。4 Q2 Y1 t7 {2 _$ }4 {(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。( V. B0 S6 h3 w6 x(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
0 F8 I5 R! x0 P/ x/ a$ d( R' `9 S1 N9 Y# I( O( ?, i4 [(欢迎访问老王论坛:laowang.vip)
Option Explicit5 N5 [: |9 G9 v/ v8 ](欢迎访问老王论坛:laowang.vip)
7 |0 S* x Z+ p1 k1 p$ M(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径: ]4 K* o _* V- I( X(欢迎访问老王论坛:laowang.vip)
Dim folderPath
2 F2 S- l# B0 H" p; x/ M9 sfolderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
: X* [( g' a1 a8 s* C
0 y$ H- |% u1 W4 |5 ~4 u4 f' 获取用户输入的新文件后缀名(不包含点)/ ~9 G Z( l' ~' ^(欢迎访问老王论坛:laowang.vip)
Dim newExtension
9 B% \4 O- `" m: NnewExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
( I9 P3 `7 p5 t0 c% P, c! @: t( [2 t0 b" P6 S$ V. C(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本2 `4 Z0 a( L% C(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then
# n9 P) ?- N- a# } MsgBox "操作已取消。", vbInformation, "信息"
9 X0 a) X+ T7 R" x! g$ I WScript.Quit
4 x; Z( Y( ]' ^End If% U1 s7 k: [( l% d' j$ O(欢迎访问老王论坛:laowang.vip)
* r+ M3 G8 [$ d$ L3 B' 确保新的后缀名不包含点(.)6 X4 F" L( U3 A8 F(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then1 O9 \" O+ S8 g1 l, l/ L(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"3 d9 Y6 C# h9 x% T8 b) J* |(欢迎访问老王论坛:laowang.vip)
WScript.Quit; z: B9 x% \ k% S; P(欢迎访问老王论坛:laowang.vip)
End If/ c$ K5 Z) I9 N(欢迎访问老王论坛:laowang.vip)
5 F( m2 Z: [) M' u$ w+ {8 `' 创建 FileSystemObject 对象3 W1 q$ N7 y Y. [9 t(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder' A' [$ X: u/ T2 m. s(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")
+ w6 K8 Q" V# U' B! N0 A$ V+ I; Q1 [( H(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
/ p Y4 t3 V5 S# X0 t$ \' {( V: ASet folder = fso.GetFolder(folderPath)% k8 l# t3 `7 n8 Y(欢迎访问老王论坛:laowang.vip)
, S! x. S L; Z" n' 检查当前目录是否包含子目录
5 c3 e. Y' ~$ z' H ]4 I" R4 cDim hasSubFolders, P7 U8 h. N) n- H6 h: R; I; o9 \& s(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0
. f0 g2 D+ K6 h8 V0 C! S# i( G- R/ {2 \. L(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
: l0 g9 O; y0 PDim modifySubFolders# ?* v, x# o$ T1 G(欢迎访问老王论坛:laowang.vip)
If hasSubFolders Then) Z1 f# L# }% N(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")5 T( m1 Q! M4 i(欢迎访问老王论坛:laowang.vip)
End If
1 Q& q( |9 D4 J* p% y1 k& S8 I- l5 z( I$ Z(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件2 J+ r# w/ C5 ^(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)
- T9 U! x5 U. M
: p8 C* [9 f5 h) f3 u7 ?9 s4 w: j' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
, b2 ^. D9 w' n0 ^- k4 hIf hasSubFolders And modifySubFolders = vbYes Then8 M: H1 S0 Q7 O# }(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders
6 X( C3 J6 X3 I5 F0 R- F, U& | Call ProcessFiles(subFolder, newExtension)7 f+ k8 `1 s+ {& J) N(欢迎访问老王论坛:laowang.vip)
Next
' J! X, p/ x5 G, MEnd If
1 u! R% T% J$ |0 j
& M# O+ _4 u9 L' n/ Q' 提示用户操作完成! u/ y8 d+ i+ q9 ^$ }' F+ L6 b- P3 ](欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"$ d l- @7 ^; S(欢迎访问老王论坛:laowang.vip)
( L5 G6 ?5 k8 [/ Q; \' 处理指定目录中的文件的子程序
* ~1 E) ]* S8 w1 ~" tSub ProcessFiles(targetFolder, newExtension)
/ t5 X) G. f- L Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
2 ~* d/ p% c' P1 M5 I( c Dim nameDict% H" o5 l0 }; E3 v(欢迎访问老王论坛:laowang.vip)
+ E, Q3 F" [% h9 c4 p& Y1 _(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名; H) a$ {" C2 r" H' n0 A& G(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")
. Z0 k/ j9 \ P* l
7 L6 ^. f- T0 Q; i! W ' 遍历指定目录下的所有文件5 t9 B% n* \% u, c(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files! t0 `7 w5 q% }9 a. A* W(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
$ m+ X D% s o; R; f [5 w! Z If LCase(fso.GetExtensionName(file)) <> "vbs" Then
% g a; W/ f( D6 Y' B ' 获取文件的旧名称、基础名称和当前后缀名6 x- g5 ^2 V& X3 \4 r9 _(欢迎访问老王论坛:laowang.vip)
oldName = file.Name/ d/ H" e. D0 a$ y/ W3 t1 T(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)6 N/ E& G- v0 J4 V6 t(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))
. u+ t/ y g0 G! n4 L% Y4 o6 l1 W! ^(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名
, M3 L3 ?! A g6 u: r* @ If currentExtension <> LCase(newExtension) Then' o' e$ O/ X: ^' x+ u7 i(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名
* ?# h B d3 g: w newName = baseName & "." & newExtension5 h+ c# C) |& w, p( y3 P- W, B1 T(欢迎访问老王论坛:laowang.vip)
3 c8 c! |, D# b, n& z- h- `& ?(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名
$ z# R, e" x$ Y+ g) | newFileName = newName+ s$ b& f. ^! j4 L& N0 n(欢迎访问老王论坛:laowang.vip)
counter = 1
* B y5 m2 ^8 s& V8 A( M" d9 Z. c. w- C ' 确保新的文件名唯一- P* b( G/ `) r' l" H/ r3 D(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)) I' b: Z! D2 {1 `) P8 r(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension
% L! x8 y7 b8 k" p3 H0 c counter = counter + 1" d5 n" h2 {1 _$ J! I(欢迎访问老王论坛:laowang.vip)
Wend
0 t ?- ]( }4 w# G9 n! ?" n6 b; I/ H6 X3 c% ?4 ?(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名
0 I) O3 Z; x$ B `5 x. G nameDict.Add newFileName, True
- X2 ~! f# K% a
( Z }4 n3 c: U5 H7 m( @ ' 重命名文件8 ^7 K. V# {. }4 I- m& q(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName) v) D' Z0 w9 G2 D2 E7 j4 h( G(欢迎访问老王论坛:laowang.vip)
End If* L* a, T0 B0 o' G2 l! i9 P(欢迎访问老王论坛:laowang.vip)
End If
8 Y0 Z; E2 K9 q$ Z5 ^6 k) {( `& R Next- b2 _$ \; T( ]0 e1 d. J(欢迎访问老王论坛:laowang.vip)
End Sub
8 t- g, ^. U a( d& ]; b1 [ K4 a% I6 h# [' b" Z; b+ A5 F: q1 V(欢迎访问老王论坛:laowang.vip)
+ Y7 f9 x8 m: a4 P; l D, c
* Y) T3 G; I, L" @ j& K0 T |