马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
' g: M3 o3 n+ A: z# O& e! l- Q1 y( W3 M8 O# _( W(欢迎访问老王论坛:laowang.vip)
0 q/ H& Y' Y/ v; k& `(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs
3 @. ?$ z! R+ Y/ q/ R# X$ p' n'& d/ M3 K3 E: O- ~(欢迎访问老王论坛:laowang.vip)
' 功能说明: K Z8 {5 b- u: ]% y(欢迎访问老王论坛:laowang.vip)
' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 ) L( P- Z+ _, M! n# X(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。
9 f2 q' [" f0 x) d'" t, a2 I! F0 Y" S+ t" J* n$ o(欢迎访问老王论坛:laowang.vip)
' 使用说明:
1 g( l5 M# T* V+ q& M' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。" t2 [5 x/ Z8 ^+ @4 R8 o% i1 j, t/ |(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。$ G z! A& ?6 p8 {(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。 W( D: _0 X. n1 W8 n(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
4 R+ M b- G0 ?+ i' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
% e8 @, {6 @# I0 Y7 n% W, w' 6. 完成后,脚本会弹出消息框提示操作已成功完成。8 w/ a' |# l( {4 H/ H+ A, i+ f5 _(欢迎访问老王论坛:laowang.vip)
: M$ t; G9 z& ^7 y+ u% K; N(欢迎访问老王论坛:laowang.vip)
Option Explicit. p8 L2 j+ Q+ c/ Q8 ~(欢迎访问老王论坛:laowang.vip)
% I8 {8 u2 f1 G: y( x8 t5 d9 ]" b3 x1 l1 U7 p' 获取当前目录的路径; d$ q8 [* K! Z) g2 I2 h8 D(欢迎访问老王论坛:laowang.vip)
Dim folderPath5 b5 O/ a4 Q4 X9 [: r' m6 P& l0 V(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
' U% C( M2 N8 J7 Q; a- j' X% |
0 C' b% I) P3 |7 u. j0 g' 获取用户输入的新文件后缀名(不包含点)7 }, X: N8 ~4 w; X(欢迎访问老王论坛:laowang.vip)
Dim newExtension
4 N# x1 v& H6 D, F' VnewExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")6 s2 s' N' V6 W0 {3 ~(欢迎访问老王论坛:laowang.vip)
( b) U) B# J' d& c/ p' ?' 如果用户取消了输入框,则退出脚本; z- W, K5 L) V6 E; ?4 j. X! K(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then- e" s, g. p# k# g& M! b0 A6 C(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"8 g2 ~) G( S' T. F2 ~1 N(欢迎访问老王论坛:laowang.vip)
WScript.Quit
- V% J' G% u2 U& ~# NEnd If
3 V) Q( w3 H6 ]' @) y, M- `9 ` D
# | \. F- |& M, x- D9 v; {& ]' 确保新的后缀名不包含点(.)
, ~* v2 S5 F. FIf InStr(newExtension, ".") > 0 Then
" o7 {' J8 D8 }0 h MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
4 s4 c0 _% p7 S, D9 T: q4 r+ R2 ^ d WScript.Quit
# L ^9 t k6 G" LEnd If
3 p$ s+ _& t+ u( v: n8 R5 |. q& K/ _( `( F8 q(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象( w5 e: r3 P9 X(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder' I0 v! D3 r1 m9 L(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")/ H, Y& g( o( J; Q(欢迎访问老王论坛:laowang.vip)
( N# ^2 H9 w& t2 e1 x' 获取当前目录的 Folder 对象
P8 S# @ Q' r0 wSet folder = fso.GetFolder(folderPath)' X- i0 Z' w% n4 ^% W(欢迎访问老王论坛:laowang.vip)
( o2 a" D( R, s) o- n- @9 K4 y' 检查当前目录是否包含子目录
; V+ {9 q6 S7 |/ Z9 qDim hasSubFolders/ G8 k4 G* d0 m2 K$ G$ m. {& {(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0: y" ~6 x; R- V$ h: O \( V3 |9 U0 n(欢迎访问老王论坛:laowang.vip)
" s t' o8 f# a0 _(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件9 e4 M; o2 J+ X [(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders
G+ Q4 c* v, `" v0 ]If hasSubFolders Then5 m) ~2 j, |. T" [(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
0 [' _) R3 M2 I9 HEnd If0 k I2 Z, I0 w- I. l: |& E. z \: o(欢迎访问老王论坛:laowang.vip)
! }. H/ z# ?. |2 n0 N2 e' 处理当前目录中的所有文件* C# {7 I1 y4 f0 f, ~. Y(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)& ^; e9 D- e/ s" i k( \) Y2 d) A! j(欢迎访问老王论坛:laowang.vip)
9 _4 C+ u6 ^' m- H; O% g! R# b+ D(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
9 |9 i2 |" z: \' _; t5 `. S5 i* _If hasSubFolders And modifySubFolders = vbYes Then- X1 H3 x9 {4 W* n' R(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders
2 Z: K1 `8 h* ] Call ProcessFiles(subFolder, newExtension)8 u0 j" e( p& v& G. e& k. X(欢迎访问老王论坛:laowang.vip)
Next
- `2 j& m6 U& t% a2 D0 H5 o9 EEnd If
" h/ L( s9 @; t3 z, W4 D! [9 N9 t/ Y(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成
. J% Q6 p) A$ L6 ~MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"( W j/ m7 P+ u' V(欢迎访问老王论坛:laowang.vip)
+ U& D0 u; _# Q* r4 ~7 m7 B' 处理指定目录中的文件的子程序
" f8 w; P# C& S. d$ N) oSub ProcessFiles(targetFolder, newExtension)" t9 ?6 ?. } ](欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
% ~. t* a5 s8 ?. y$ m# J9 P& K Dim nameDict; L$ A0 D* |2 N5 |/ w) J# a(欢迎访问老王论坛:laowang.vip)
9 k3 x4 X5 a3 e ^ ' 创建一个字典对象,用于存储当前目录内的文件名
. J- e% ^2 t" C- m" q/ i Set nameDict = CreateObject("Scripting.Dictionary")
$ Y4 k0 L# x6 \2 O
% Q1 o( x/ L' e7 H: W1 E ' 遍历指定目录下的所有文件4 E* K4 @- F& _* e) C(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files
; s5 t8 w. G( p% S0 o1 o* s ' 跳过后缀名为 .vbs 的文件
- ]8 P1 v, z4 W0 Y" N$ c If LCase(fso.GetExtensionName(file)) <> "vbs" Then% h$ q8 _0 h0 w( P4 Q(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名- f+ F" R- A# z/ J$ }( S9 R1 l8 g(欢迎访问老王论坛:laowang.vip)
oldName = file.Name
, j+ n' g, N! l4 m4 K4 c. m baseName = fso.GetBaseName(file)/ r( l( ?7 O3 C' K: o(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))9 R$ }6 G5 v0 u6 V, K/ D(欢迎访问老王论坛:laowang.vip)
( c: e% G$ m+ z& _. {" t% V; t ' 如果当前后缀名与新后缀名不同,则进行重命名) Y9 O/ o$ N6 X' e(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then g) o6 {) W- t4 x' i4 S(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名
1 ~8 c8 ^/ G) E3 ^ newName = baseName & "." & newExtension
" e/ {% A! Y8 Y* b+ s! g4 w- G
: f. v: m% P& p/ v. H ' 检查是否已有同名文件,如果有,则处理重名
+ h, g2 M1 C" f7 ?* P) k5 x( M newFileName = newName1 v6 P( c% a5 J8 H/ w(欢迎访问老王论坛:laowang.vip)
counter = 1
5 Q0 |' L& L9 K ' 确保新的文件名唯一 i( Q9 m5 ]0 c, Q! n* x(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)* O7 n! L1 l; @3 @" ?* l' i6 G(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension
) T( y$ |$ H6 s. \* ~; F counter = counter + 1 G- d. m" Z# q7 P$ W# t! l( r(欢迎访问老王论坛:laowang.vip)
Wend
* ~5 e! U3 m5 F8 n# J
# R4 W$ w; i( U, |) b- u ' 记录新的文件名! u1 K [! o- v# [/ X(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True
/ _1 C \& O+ F; P
7 k% o, j% X! A# p. S ' 重命名文件" \4 z0 G0 R) N9 n) i3 B8 |/ g(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName
, o7 x1 z/ |! p7 f3 U End If
7 J. ~ Z5 s8 Z# L T3 | End If
- R6 X( v, }- U5 P Next& r1 C7 x# j; W8 k7 I% f2 S4 n(欢迎访问老王论坛:laowang.vip)
End Sub
/ t* E! @9 G% ~% u O* Y% G" C, ?, @- z/ u/ K0 W(欢迎访问老王论坛:laowang.vip)
& z6 l& H" e, m' ^% D) V7 |8 J- t& D) X(欢迎访问老王论坛:laowang.vip)
|