马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
) U. }" R# ^$ A& E- y4 r- U! e( a! r5 h c( Q(欢迎访问老王论坛:laowang.vip)
+ |) G8 b1 a3 t* o& C7 B* e8 H; o* i(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs$ U8 Q( p' \- G. L* Q9 j(欢迎访问老王论坛:laowang.vip)
'
# z+ Q2 f0 N. m9 d' B' 功能说明:( S9 E' ?' I+ F1 S* ~ i9 y" A+ s(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 7 C: Y: J- x& W: ?4 D) S1 }(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。' d4 |8 l; e+ J4 {2 Y(欢迎访问老王论坛:laowang.vip)
'/ L. C* W/ n% E' w1 I(欢迎访问老王论坛:laowang.vip)
' 使用说明:# b, t/ F5 n' ~1 D8 l2 G(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
o3 J3 `8 e/ c/ \0 F" b' 2. 双击运行脚本或通过命令行运行。
+ e( [) R2 D, q' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
6 H1 s# a' o' e8 L1 w' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。9 m; a. w4 Q' Q(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。$ B5 G7 D/ `% c(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
! S5 o! v. F2 Z( N( o# \4 a: j; l4 z+ b" i% r0 \# O(欢迎访问老王论坛:laowang.vip)
Option Explicit
( w8 e1 {5 z$ P+ W0 X# G! e; O$ V$ j4 ?$ D' W$ U) ](欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
! C t [: _4 vDim folderPath
/ y/ c+ {7 c0 X8 [: C, nfolderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
: b2 R1 X% H' O4 `
2 ~5 N5 n7 b6 q/ k1 N1 }& d! X* G' 获取用户输入的新文件后缀名(不包含点)
% Z; P0 ?+ |; j5 u. jDim newExtension7 t3 W9 `$ U* [8 c(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")9 N3 e# q6 g# K p+ {0 N(欢迎访问老王论坛:laowang.vip)
Y; Y6 N- i5 v x. O(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本
5 c4 p" l( p# `( K- [/ ]& IIf newExtension = "" Then
4 N; B- g5 g7 \* F. P1 d* S MsgBox "操作已取消。", vbInformation, "信息"6 j6 B+ Z7 Z, u" _/ y1 a* g8 B(欢迎访问老王论坛:laowang.vip)
WScript.Quit/ J$ \3 U5 s9 z( H6 f(欢迎访问老王论坛:laowang.vip)
End If
, F% t. C& g4 n, t
8 {1 a& g4 {; q. i+ Q' 确保新的后缀名不包含点(.)
! G- H8 i: X6 N5 C( B7 W* M* c- CIf InStr(newExtension, ".") > 0 Then
$ I2 u* P( t0 | U6 _/ W7 m& @ MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"5 s( e4 {% y( B! j% S(欢迎访问老王论坛:laowang.vip)
WScript.Quit5 x/ A, T7 [. v(欢迎访问老王论坛:laowang.vip)
End If! O0 q* i! x$ o+ m" V(欢迎访问老王论坛:laowang.vip)
" t7 f6 F B& F+ S) m(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象" E! t- P o1 ~7 B% c(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder6 _( ?4 t$ u+ `, {(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")( \+ P3 U' b* w4 L0 P" Q9 F0 h( z(欢迎访问老王论坛:laowang.vip)
- R4 ~+ `7 A9 M. |2 A2 V0 E4 i(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
" J$ P, K" e) t7 Q: S9 D( FSet folder = fso.GetFolder(folderPath)" ?. e% }1 L8 z5 f1 @9 }1 C9 K& J(欢迎访问老王论坛:laowang.vip)
: w3 k$ y7 N3 l, b; U1 H' 检查当前目录是否包含子目录
6 Z1 ^) H2 {0 w1 XDim hasSubFolders1 w& r1 W. Y7 Q(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0
* X2 y# D! a! R0 T# G1 l/ e: S6 U4 _, p c d! Q0 q(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件- q; P* ^& T) Q+ ` G8 z3 X6 h(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders
! J( r$ Z7 l& B( e: e5 ^+ k' c2 NIf hasSubFolders Then
- p; [( l" G9 e. U/ H modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")% q& u) c; q) Z: T) T, T(欢迎访问老王论坛:laowang.vip)
End If
. n1 `! H5 ?: L6 H1 c7 F# R& F
9 W8 z. g7 _% T5 Y% m# r* h' 处理当前目录中的所有文件
- f% X# V3 J O% xCall ProcessFiles(folder, newExtension)
) j* b$ R3 P: T& n4 A% i* ~8 t; R8 a' {" a% h# V1 F1 K(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
% s6 w( I. V0 I0 |* G+ pIf hasSubFolders And modifySubFolders = vbYes Then: ?. {# V5 w8 J* w7 M" f7 Z(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders6 w/ p( I8 ~3 ?$ }/ A(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)
" O0 E+ G& t) I% A* F6 A Next# g8 Z _( E) k; \(欢迎访问老王论坛:laowang.vip)
End If
@( H/ ~& {' [$ i0 R) Z4 w
M5 e5 \0 K% P- a" D' 提示用户操作完成! J& J3 E }# U! d8 A(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成" q$ i8 c* Q) ?/ |" m: S7 B* L7 I(欢迎访问老王论坛:laowang.vip)
A$ g b' L+ z* U" J$ W- H4 p(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序6 ]$ u8 H3 X5 z4 X1 K; ?2 S/ g(欢迎访问老王论坛:laowang.vip)
Sub ProcessFiles(targetFolder, newExtension)! L! E" X8 {% o3 s# J) `(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
8 z. p3 c0 Y$ [. J6 Q Dim nameDict
' n3 M5 g5 m; V V; T9 r6 F4 ^$ c0 R* W" m% a+ P' T* l(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名$ s2 x7 s% p# ?9 z( t% P(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")
8 n: Z. Q) Q; J' Y* H" X' u& c4 c" ~2 g N) |: m(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件* ] q( K; a% u2 {3 k3 |9 R(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files
3 R2 g8 y# Q; I: R4 t( ~% D% \. G ' 跳过后缀名为 .vbs 的文件
# ]2 j, X5 L6 k* q+ A7 v If LCase(fso.GetExtensionName(file)) <> "vbs" Then9 Q& ~3 S7 J2 j' Q% u1 m+ a: x(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名" D: Q i5 J# ^& C5 a(欢迎访问老王论坛:laowang.vip)
oldName = file.Name( U; _( g8 B( O1 U3 o(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)
" S* N& K+ O9 }+ h' P currentExtension = LCase(fso.GetExtensionName(file))4 K' J+ x! {6 R1 M0 @(欢迎访问老王论坛:laowang.vip)
, u$ O1 |% _* k(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名
2 b2 g& Q) h: S& s" n5 _& C- p If currentExtension <> LCase(newExtension) Then( w- e* C! K, ` L(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名& }8 ]; G. _' K& |* ]( w1 x0 b(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension/ U1 I( A, p* B# R [8 R0 F* L' B(欢迎访问老王论坛:laowang.vip)
8 w6 d4 @4 U9 c. D6 @: q0 | ' 检查是否已有同名文件,如果有,则处理重名
}: }* x0 d' H- ^; z9 @ newFileName = newName& L1 j% x1 l2 I1 }& Y* n4 A6 d# X) I(欢迎访问老王论坛:laowang.vip)
counter = 1( B/ Q. T% i: `: ]5 z1 t(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一
: J; Y2 z- _: g: E8 v' q While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)8 h) L% S5 F' \" o, N% X* I(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension) N' E7 w; f8 w9 Y(欢迎访问老王论坛:laowang.vip)
counter = counter + 1
! i# d$ e, J: O+ C! o0 }+ U* r Wend
( W/ W3 }9 e! G; h6 Z
8 \3 @. Y( w ~: B8 v( D% M ' 记录新的文件名6 p2 z) d( G8 j- W5 m: f(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True T* Q" D( l6 c& ^(欢迎访问老王论坛:laowang.vip)
) |5 o' e( j( |" S% l. Y& K+ s/ K% k- l ' 重命名文件
" | j V n" j) q/ V7 l file.Name = newFileName; u7 T" {9 k. n& [3 g2 ?/ @- ~! d4 X" W) J: ](欢迎访问老王论坛:laowang.vip)
End If0 [- U/ Q5 h; K/ h& s' I: L; Z(欢迎访问老王论坛:laowang.vip)
End If
& r+ C. r: R/ |9 }+ ? Next
. y$ j# Q' m% z0 BEnd Sub7 D( _% I' j$ H3 x1 I8 [2 g(欢迎访问老王论坛:laowang.vip)
) x. F6 ~; X, n ^& E+ d* [1 d. x) ^, L3 D# k2 A9 \" A; x0 c(欢迎访问老王论坛:laowang.vip)
" |1 P3 R/ q3 j1 j |