马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):" k4 O$ v" e1 B$ d: X9 e- @(欢迎访问老王论坛:laowang.vip)
! K4 [7 G8 A$ [9 |& R(欢迎访问老王论坛:laowang.vip)
# k) Y2 C. F, P9 J(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs# }1 Y' Z) @$ O' l(欢迎访问老王论坛:laowang.vip)
'
- R( a' Z6 E- R: d' 功能说明:
' r% c1 }8 t: ~( D( ^( G( o" }5 z' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 % l. d, u9 U5 U(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。
7 ?. ~% l$ R: m'
/ A( v" d! {& L) X' 使用说明:' V6 a2 r8 O) c. J. C(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。4 V& r9 G) p5 J! n' l(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。
' ]. r) r; z0 g* k1 f' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。6 w+ b( w9 t: e( x; \' v(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。$ P4 s' N* w3 g(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
0 ~1 ^. O! h6 K: N& A' 6. 完成后,脚本会弹出消息框提示操作已成功完成。3 @* k# [5 m4 ^/ M X* u(欢迎访问老王论坛:laowang.vip)
* G; G& L0 v8 @# G4 ZOption Explicit2 x& ~3 K! @' P" k3 H( L Z: r(欢迎访问老王论坛:laowang.vip)
. }1 A1 s$ l* Q0 ]4 j J G: ]9 M$ ?' 获取当前目录的路径
7 e" f$ q `* o8 JDim folderPath: J4 ?" B ^4 _5 `* j(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
: \* n0 K0 j( R I! @0 |2 ?7 c" X& M, _& a$ ~+ w7 l" p. D(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)# o4 |: {; [3 h. M9 T(欢迎访问老王论坛:laowang.vip)
Dim newExtension
* a2 H9 w, F: o7 x; L' S, ynewExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
) K l6 I) x* a4 h+ `1 l& _8 i7 ^0 W% f" j! n0 z; h/ D5 Z(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本% u# G9 y4 M* c- D4 Z! T(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then
* {+ ~! c7 B# }: A: q1 ~ MsgBox "操作已取消。", vbInformation, "信息"
' \4 V( W6 o. z2 S WScript.Quit$ k! H4 I, j/ d4 v' k2 }/ f3 U7 J(欢迎访问老王论坛:laowang.vip)
End If
5 K/ O1 Y ~5 Q0 k3 R% @/ a/ E6 M- m/ |: T; b(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)
7 r, M/ l K+ U# t* @If InStr(newExtension, ".") > 0 Then; j% H, n9 M- E8 y2 V(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
6 g( y' R- j- h8 p* Y WScript.Quit" P$ G; i0 H8 c' K- I, q5 T(欢迎访问老王论坛:laowang.vip)
End If# K% \' E7 g" R* Z' ]: o$ i, o% x) |(欢迎访问老王论坛:laowang.vip)
1 T& n# _" E; `7 y' r4 ](欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象5 f' q2 x5 O; l$ i" u- x- p+ P(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
$ {9 g! r" h2 M8 C; bSet fso = CreateObject("Scripting.FileSystemObject"). i. U# T S+ }/ `(欢迎访问老王论坛:laowang.vip)
+ u; a3 k+ c9 o' 获取当前目录的 Folder 对象
# y/ Y1 ]4 X K0 l, g: t3 PSet folder = fso.GetFolder(folderPath)
% F" H9 i9 w& f' o9 j# a& g. h" g! L1 n2 C& }# F(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录
7 g! R1 r( b% c: R8 wDim hasSubFolders
: {1 I9 o7 k/ d4 ^9 a' J4 w4 N% J0 yhasSubFolders = folder.SubFolders.Count > 0& r7 z6 t$ [# O(欢迎访问老王论坛:laowang.vip)
$ k" J0 X- i& G8 g3 ^" H' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件$ f7 O2 Q* I1 v(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders
" { ~$ {+ [# M$ R9 Y0 aIf hasSubFolders Then0 U0 x, h/ D* D$ z3 K(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
2 k& L- L/ n4 |# yEnd If
; O) h& P$ E, M1 M" W+ C1 `. e' h i3 l) T9 D(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件; _ O" m5 D1 g- \(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)
5 a& Y+ b' ~4 ^# G. J% s* m. W- n* [ l% X" t1 c3 p, M: _(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
1 q. P" q1 A# l/ `1 `% @" I; E$ JIf hasSubFolders And modifySubFolders = vbYes Then
, l9 g' U/ c4 ?4 ^ h; I( I For Each subFolder In folder.SubFolders
. d% v& R. S4 Y* _# a9 J" P Call ProcessFiles(subFolder, newExtension)2 T' k3 Y! q7 s2 i(欢迎访问老王论坛:laowang.vip)
Next
p+ ?8 l8 B- G# ?% qEnd If! s* h$ g U; S+ d* O(欢迎访问老王论坛:laowang.vip)
! O; |3 \, ? L4 S(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成7 F r6 J1 O. r' p; W& [" x/ G(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"# r9 \. _ k9 i f(欢迎访问老王论坛:laowang.vip)
- F' Y" f, B5 J(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
+ W- q+ T5 x. iSub ProcessFiles(targetFolder, newExtension)' \' g( k( h6 d2 k(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
! y& i% I$ }7 F' i' N- h Dim nameDict! w( `- X" q4 v. X2 d/ V2 ?(欢迎访问老王论坛:laowang.vip)
; C+ Y' Y: M" {; K: o) K(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名% u9 g. K g" z( T3 s& @) S(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")2 t4 y: K: j5 n( ](欢迎访问老王论坛:laowang.vip)
* ]2 r1 h5 P% q' @ ' 遍历指定目录下的所有文件
9 L6 _: d; ]) c `+ ~3 @3 w" m8 L For Each file In targetFolder.Files
- h6 O6 g* R" Y+ x5 O$ _ ' 跳过后缀名为 .vbs 的文件
. M. [6 I) a7 u) `$ h) W If LCase(fso.GetExtensionName(file)) <> "vbs" Then3 o4 T( C2 v& v8 ^(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名9 [4 }9 H0 _: Q( }$ R0 l(欢迎访问老王论坛:laowang.vip)
oldName = file.Name1 o# k2 n9 q+ o' r \" m(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)
! N7 i Z3 \4 D* {; V( H3 ?$ v currentExtension = LCase(fso.GetExtensionName(file))$ |( l; o. W& y2 S8 ~! o" t8 F(欢迎访问老王论坛:laowang.vip)
0 l1 B4 F; R0 n/ A4 n" s- p7 X ' 如果当前后缀名与新后缀名不同,则进行重命名
0 E# m0 z1 n9 l If currentExtension <> LCase(newExtension) Then$ l; b6 L* ]' P* {3 \5 X% b. m$ X( M(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名# S. ~8 I$ f3 F(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension# T+ S' [6 i6 n* V0 r4 e8 g(欢迎访问老王论坛:laowang.vip)
+ x1 W1 [$ l( E0 d1 q% |(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名$ [0 k& Q6 `& Q6 w" R(欢迎访问老王论坛:laowang.vip)
newFileName = newName3 {) B7 b: D- `) a(欢迎访问老王论坛:laowang.vip)
counter = 1
9 |4 E0 R% }, m% c& I+ Q5 C ' 确保新的文件名唯一
. d2 l$ ]9 s' t% [0 F! A$ F While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
7 p) Y+ f* }2 t+ h u! c; D7 s6 ^ newFileName = baseName & "(" & counter & ")." & newExtension
2 `" y& ~" L6 s% d5 i counter = counter + 1 E; K4 K; q" a3 g, [- J; A9 g0 T(欢迎访问老王论坛:laowang.vip)
Wend5 U/ s3 `- a3 r3 z(欢迎访问老王论坛:laowang.vip)
5 ?/ H+ s9 j, o' f$ o( ]$ ~(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名; z, @# h8 w6 P8 W. [5 ^: {2 _(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True, ? U' w7 [3 q9 C! Q/ F' q" S g(欢迎访问老王论坛:laowang.vip)
2 M5 q6 f5 u4 p% B(欢迎访问老王论坛:laowang.vip)
' 重命名文件
( ^' p3 y, t3 y file.Name = newFileName
" S4 J/ X& Z0 r: R8 v2 L) `) ~ End If
% ]* A# k3 i8 n End If# V+ `! G) S% g6 B& d(欢迎访问老王论坛:laowang.vip)
Next
) g3 O; D# K0 F: x( f4 @End Sub# f+ k' A& Z; ^8 q* ^1 J$ F$ ~& b b(欢迎访问老王论坛:laowang.vip)
6 |* p: O- \) t+ q: x% v: u6 c$ d3 F" A `(欢迎访问老王论坛:laowang.vip)
0 P# |$ x- p/ U4 b |