马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
! u* p& @3 A1 [
p# I8 q3 I& ?! B5 y# N. Y
, \+ |. ~- C, ?) k/ N% V3 }" Z' 修改文件后缀名.vbs
3 I9 b( L/ B* v8 N) S'
- m/ K7 n: o" D. T. |4 Y' v' 功能说明:1 k j5 [* a6 s" M(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 t: X( `$ p! _1 w+ I7 j& M(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。' O; C1 q: V c3 T(欢迎访问老王论坛:laowang.vip)
'% C, k& p( [* S; W2 o& y- F(欢迎访问老王论坛:laowang.vip)
' 使用说明:, f1 W9 B3 R& g(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
, _+ S2 ~- f4 U0 F ^' 2. 双击运行脚本或通过命令行运行。
' J' B7 Z4 V' }9 u+ f! E( \' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
, o% U0 _% d/ n$ f7 @3 W0 T' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。+ c9 G) l- N! [( q1 a5 i(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。5 L0 O1 j/ s# Z' t. Y4 q9 Z(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
: r* }* t' l: I# U1 r
+ w9 p( l. u+ w! U3 h/ K6 F. @Option Explicit' R. `0 m n4 \4 ? ^, N(欢迎访问老王论坛:laowang.vip)
+ @; t% s: M* E6 F' 获取当前目录的路径
8 A3 S) y$ i. {7 }. E* IDim folderPath+ C6 f( P/ L) _8 s) D(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
9 e8 ?0 f p$ L( z2 T& `# i4 q2 m+ b6 O( ]% T; M(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)
) D8 {. v% m# c# u2 g) TDim newExtension) w+ G6 Q9 G6 P, ?7 w(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
' P' r: D8 G$ E/ |3 v) U4 `! ]1 v- K1 p) }(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本
2 Y7 P8 c- W$ s7 K( u' GIf newExtension = "" Then c' @4 p/ `3 V! b(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
3 X* c& d. g; _0 p8 F. T WScript.Quit
k, n' [! {2 z4 [ J2 i+ |/ {End If
" D% c* e! w* _3 u4 }+ p8 `0 C+ _7 U, V) G1 I- ]" k(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)% c/ d9 X( R7 T(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then
% V$ B- `( i$ a MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
% G5 [+ e, T* e. j WScript.Quit
4 N, `6 L# t/ v8 X' z: ZEnd If+ j. E2 l& |# C8 x: Q) ~(欢迎访问老王论坛:laowang.vip)
: ]/ i7 {, }* H+ E' 创建 FileSystemObject 对象5 \) {) o/ G6 _, Q3 V* M+ b3 J1 n(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
$ h3 s& ]& q% M" i4 uSet fso = CreateObject("Scripting.FileSystemObject")
! F* {5 E! K1 w" o9 ?6 W' D/ ^ f1 w* g& p& n; s(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
) N9 A( X0 p0 S! h0 iSet folder = fso.GetFolder(folderPath); X6 H: l% i$ c4 ~# I0 b7 E(欢迎访问老王论坛:laowang.vip)
/ f( n( h8 o4 ]0 g+ {3 _(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录5 z- \% K: g0 I- d3 E(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders4 [: _$ u% | W# _% p. I0 c6 ^(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0
0 p2 A0 O4 B7 T9 F
5 `( R/ e. D- X; h k; \4 R' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
J! K5 ]( \+ ]+ G! V+ }Dim modifySubFolders
( C0 I* F: w4 K; o4 ~$ iIf hasSubFolders Then
( g, c% N3 V, D4 c3 m# ^ modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")! Y: @+ r# x4 R' L- K t# a* B(欢迎访问老王论坛:laowang.vip)
End If
. L8 }) W3 u% P& }' F M" s; p+ l4 Y0 r' }: a* {- Y9 J(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件0 z3 z4 A9 I; X) a. m% T" q(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension) u M! [3 C4 m(欢迎访问老王论坛:laowang.vip)
5 D3 _& c ` O5 c7 Z( J(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件$ @4 j D3 j5 L8 K. x1 @(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then
$ v& ?$ Z1 K# M3 |3 v* m- }7 C For Each subFolder In folder.SubFolders3 i% ]+ h2 x& s0 g7 ^5 J: J" u(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)9 j. h! X1 ^6 A" |7 ^(欢迎访问老王论坛:laowang.vip)
Next% _3 |* R8 a) c' j3 t(欢迎访问老王论坛:laowang.vip)
End If
1 G# j) Y. G+ n: W P* r U! ]# q& j) K$ \7 c$ Y(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成) N+ F, d" f% `(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
3 P8 l6 n- i: k9 M+ B8 m; Z6 X7 u! L/ h, H3 H7 C8 q+ j(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
. Q7 g# H4 @: i+ I# {9 B$ A& sSub ProcessFiles(targetFolder, newExtension)
% }$ ]3 I$ I7 D5 L Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
5 ] y$ G D ~2 q" b- w Dim nameDict
7 p0 l% A, X7 ^: L9 y& V0 M2 O/ u; a
9 m8 B3 F$ l- u, \; }. G; ^ ' 创建一个字典对象,用于存储当前目录内的文件名
2 l/ `0 @( J% R Set nameDict = CreateObject("Scripting.Dictionary")
+ R5 b8 r- X1 O! a; e
, i$ p S6 g6 \9 g, V ' 遍历指定目录下的所有文件
: `/ S! g! G3 X7 k; v5 ^, c For Each file In targetFolder.Files
- ]4 x0 k1 S4 i3 k ' 跳过后缀名为 .vbs 的文件
q* p. p+ q( g& u& T# K3 q If LCase(fso.GetExtensionName(file)) <> "vbs" Then
+ E6 C6 L; m @& ? ' 获取文件的旧名称、基础名称和当前后缀名
: h9 I9 m8 l" G: t1 ^ oldName = file.Name8 s1 ]7 L6 m G, b: k* }(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)0 X3 ]& J. U1 y! g& @4 z$ z0 M(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file)); F) _: o2 V0 y: [5 t6 a+ ?" d(欢迎访问老王论坛:laowang.vip)
) T0 r( c- \! @ ' 如果当前后缀名与新后缀名不同,则进行重命名, a$ p) j6 k9 N: t* x; L(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then
( g4 w2 A: j& K! d# R ' 创建新的文件名1 Y; z4 T" D! `( M( p9 Z(欢迎访问老王论坛:laowang.vip)
newName = baseName & "." & newExtension
9 L: b9 h1 R( x( Q; Q) u# V
1 e) I- {. H# k! R" `$ s2 v* {$ R6 [7 P ' 检查是否已有同名文件,如果有,则处理重名 @2 j: R2 z6 N/ U3 W \, c(欢迎访问老王论坛:laowang.vip)
newFileName = newName( s1 y& m8 P; r% y* c& j) Z0 C2 `(欢迎访问老王论坛:laowang.vip)
counter = 1
* h$ X; v. p' X* i. `5 L! i6 D ' 确保新的文件名唯一% H$ G* M7 T" K4 B T( m(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)" U& x# G4 q' @- x( C2 l(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension) Z' c4 M, }) I5 T7 ^. m( K" Y$ @(欢迎访问老王论坛:laowang.vip)
counter = counter + 10 Q& O: G5 b; l+ S(欢迎访问老王论坛:laowang.vip)
Wend
& \+ a4 m, [% M* Z _" f3 _6 o4 W. E8 n$ t7 Z(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名
0 G, J+ L& w* D0 K. R: v nameDict.Add newFileName, True! [1 n! B, T) V: O4 q3 H(欢迎访问老王论坛:laowang.vip)
* O$ ?, _- G6 C2 K(欢迎访问老王论坛:laowang.vip)
' 重命名文件2 V0 `. w8 {8 d: `; k& l(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName
/ }% [2 g+ M/ |& ^ End If
+ d! r9 V U9 R! a$ b9 X. l$ c End If
+ C4 P- D) U$ Z' P& H1 } Next
' d) |* @; C$ |End Sub# G) L% Q' W7 S(欢迎访问老王论坛:laowang.vip)
+ n8 [2 |7 ?. l, V# ~' z; S" c& O(欢迎访问老王论坛:laowang.vip)
9 i2 C+ s, T, m1 `: t(欢迎访问老王论坛:laowang.vip)
$ g0 {9 n) y5 E) a! T4 ^2 X(欢迎访问老王论坛:laowang.vip)
|