马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):' @7 v2 w* e/ f: q- V; ](欢迎访问老王论坛:laowang.vip)
) E- O/ B& a5 Q1 z0 ^) A: j(欢迎访问老王论坛:laowang.vip)
A/ W/ F: P O) h& m; K5 k3 J& D(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs
7 U$ z3 j/ L; D8 V! j' ^'
5 U: ]" [8 [( B. T% V' 功能说明:8 Q; K$ q% g: h(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 , `) }! v, W# X7 {" Q B2 c. I% H(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。$ M8 o6 g# Z- b3 p& s- x(欢迎访问老王论坛:laowang.vip)
'9 o" `4 x, j' V' N$ H" Z0 v- m(欢迎访问老王论坛:laowang.vip)
' 使用说明:6 g' q6 J) ]# h/ M" [( k(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。6 b1 w0 R. R" P9 x/ Y, F `! ~9 e8 l# T(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。
1 x+ I& F. \$ f3 s. B7 N' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
9 M' B! n. c& q4 o k- q' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。4 j& M! `2 U9 n: Y3 X7 X(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。$ \8 k; r# `9 { G3 j6 l) w0 l(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。* I- [! b- m+ c(欢迎访问老王论坛:laowang.vip)
1 i% b5 j$ {7 |8 |8 J8 B6 kOption Explicit( J$ h& K: ]( n2 r e(欢迎访问老王论坛:laowang.vip)
& M* [$ v% ~; F(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径) \( ?8 e3 F0 D6 C. N0 _5 Q. U(欢迎访问老王论坛:laowang.vip)
Dim folderPath& S- W* ^' L3 N `(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
2 s% n; p1 j6 B! }+ j0 j5 y( ~- ^! J% @# J8 H$ x* s) d3 w. {(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)
9 Z; X. P5 b( ?5 T! J! \+ hDim newExtension4 G6 |" Q% z8 R" N: F(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")6 ^- X) M* p% G(欢迎访问老王论坛:laowang.vip)
8 O8 E# s3 b$ @: b. `(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本- i' I$ b& n; f! m) s" x(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then! }" g$ {3 f0 F& [! f/ _(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
' l4 k; j+ x; ?( `/ Z3 M- M! W% V WScript.Quit% p. B* m0 j( c4 D(欢迎访问老王论坛:laowang.vip)
End If
6 W' Y/ I+ v' _" R1 o `% ]' ]% ^6 l% \- _8 ]1 T! `(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)4 {2 a$ ~3 ]) N6 Y(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then
6 }+ L* v" l! b+ k6 s( r+ j8 ? l MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"; ^' Z% D4 o' P+ B$ a) f, ]6 T(欢迎访问老王论坛:laowang.vip)
WScript.Quit6 c; S, k2 F7 u$ f# d# i(欢迎访问老王论坛:laowang.vip)
End If8 K8 c4 j3 s0 ^(欢迎访问老王论坛:laowang.vip)
6 x2 o1 l) Z3 g0 Z$ b. H7 Q# G b" M(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象5 S. V2 U+ A1 `! V3 I& n# r(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder& T* w/ ^& f: O" T2 }) Q5 |(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")$ B6 k* ^) x u3 K(欢迎访问老王论坛:laowang.vip)
1 X* Z; X7 K7 Y7 a& B1 V1 s% d' 获取当前目录的 Folder 对象7 j9 O5 I$ ^* d O1 b(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)
: r: G% i0 m) l6 r2 I
( g4 o" l7 `% u; a8 d4 @' 检查当前目录是否包含子目录9 h5 v, w2 E: z4 D4 ~2 i Q; I(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders3 |2 R8 h, b! B5 ^(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0
: L% l5 Y- I8 ~5 N4 T5 R+ Z7 r$ x7 I. O9 E# s(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
1 Y \+ U6 X- t$ `Dim modifySubFolders
2 D; L# R7 l; d) `; j1 F# I& LIf hasSubFolders Then
" m; { L4 E1 }/ K modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
4 t. e2 h; @2 v! ^3 N) p) K; B% [End If
3 I6 r5 c; g/ w8 ]. g) O) }7 W) T3 Q, Q5 V: c(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件. V0 @$ @: H3 u' V2 j(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)
- g( a) o5 A: u$ V6 A
8 l1 y: b$ Y# I' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件1 [7 m8 c1 ~) A4 M(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then& v D2 c. y2 M; L) j# a8 @( e(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders
1 i0 B6 a- N8 Z O* v% } Call ProcessFiles(subFolder, newExtension)
, b4 w) X f6 h' Z9 d Next0 N4 ^ R4 D& ?, A3 M0 S(欢迎访问老王论坛:laowang.vip)
End If
4 y; I1 G3 l0 p# w
. D, v* e/ J5 M* m+ r' 提示用户操作完成
2 p( `* R) H1 `/ E: OMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"+ G1 Z- j) F4 [(欢迎访问老王论坛:laowang.vip)
, B3 u: b+ M& j0 N% y& a' 处理指定目录中的文件的子程序2 u& A" c# j# N1 k% R \(欢迎访问老王论坛:laowang.vip)
Sub ProcessFiles(targetFolder, newExtension)+ Y2 L& G; I3 w1 H(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter, R( q- {( S! i/ {$ i(欢迎访问老王论坛:laowang.vip)
Dim nameDict
1 [' y1 o- O: R1 z3 K8 n+ E# [0 R6 x(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名" s- p( Z. B4 d7 Y(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary"), @# J( H$ q9 }$ c(欢迎访问老王论坛:laowang.vip)
' u5 a4 U8 |( c4 j. T ' 遍历指定目录下的所有文件# {( H/ V6 ^& b, C5 Q! V/ Z6 D(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files, ^& r$ z( x- I9 B(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
, O: X- X1 Q& ?$ q If LCase(fso.GetExtensionName(file)) <> "vbs" Then5 |* j# c( {" a {! A: x# _(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名
3 z( Z4 j( N- a |) F& c% P2 F" c. T8 W* o0 { oldName = file.Name' t9 N" P5 b' H' e- Y7 h2 ^* d(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)' S- k' d! Y S; d; L. ?* U5 b(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))
h2 y' u9 E6 A# |7 d" b# X0 s" M- b' |/ {; [(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名
2 d' O# `! q' G- z1 p If currentExtension <> LCase(newExtension) Then7 s6 ~ m7 n5 M" L- t(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名1 i- D( ^" c$ g2 z4 a3 F- p(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension' b2 \' O. w( E* Y- y(欢迎访问老王论坛:laowang.vip)
/ [! f" a% F5 u(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名- V3 o9 F( u$ Y( q, u(欢迎访问老王论坛:laowang.vip)
newFileName = newName
* w/ n9 N) P ]# r8 b counter = 15 I+ o+ y- B1 M5 G0 x(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一
3 I7 U+ A7 F. G. `8 L, z& ~( S While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
( T' X1 P9 c( D; c L9 h newFileName = baseName & "(" & counter & ")." & newExtension6 y7 R; [ Y- k(欢迎访问老王论坛:laowang.vip)
counter = counter + 1
2 C# e- J& h8 m, }0 B Wend% d9 g4 F- T$ p8 b/ T7 d! t2 \+ G(欢迎访问老王论坛:laowang.vip)
C% l; F: P6 m C2 U ^ ' 记录新的文件名
' x& ]5 \" P" ]7 h0 Q, ~0 ~* g$ M0 o* Z nameDict.Add newFileName, True% ^: O( N4 T: W: J& Y+ R(欢迎访问老王论坛:laowang.vip)
' ?$ t7 L: B: P& A8 U% _; p i6 [9 Z. p ' 重命名文件' x# N; E# j; z" L5 |9 O(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName5 j- y1 ^( y5 D/ K; ?(欢迎访问老王论坛:laowang.vip)
End If
7 \, @5 Q0 S5 k End If
6 e8 Z/ F0 U- L+ N2 O! C Next
2 L* I, k" {7 Z5 q N* p8 ?* ^End Sub
# d3 {1 z1 e3 j5 Y K8 l# G( o/ a z% w/ u1 K' e(欢迎访问老王论坛:laowang.vip)
$ i- w3 _8 ~ E- T/ a8 S(欢迎访问老王论坛:laowang.vip)
/ N* m, B; c* d(欢迎访问老王论坛:laowang.vip)
|