马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):% g" w6 N2 u6 F. ~(欢迎访问老王论坛:laowang.vip)
$ e4 |; v. L U- C5 v% e% o+ c* v(欢迎访问老王论坛:laowang.vip)
& _6 F. v) ]% u. I% q5 f" X' 修改文件后缀名.vbs
3 b3 n* W) u4 \'5 F/ f& g2 t" V- c(欢迎访问老王论坛:laowang.vip)
' 功能说明:
. b. B0 D( j; m b7 M' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
_" {3 Z) Y) J1 {8 q- G+ W1 e' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。$ `% C% ?0 X9 [(欢迎访问老王论坛:laowang.vip)
'
3 T0 `/ F5 N# Q/ p# ^3 I; s' 使用说明:3 `4 [/ ~; E( O0 N# P& C7 R" R(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
) H( b" q5 p5 l7 k9 I& [: \ M5 [' 2. 双击运行脚本或通过命令行运行。: w" M9 F* s+ W% m(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。5 B' @% L! s& e k(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
- w9 Q# O+ _3 I/ O3 V' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
/ W5 w6 x+ A: c' 6. 完成后,脚本会弹出消息框提示操作已成功完成。- d3 ~" s. v) K' {2 ?(欢迎访问老王论坛:laowang.vip)
E% {* e% y" {7 K) n(欢迎访问老王论坛:laowang.vip)
Option Explicit
7 ^* O. Y1 t0 {! k
2 [: \' N3 y* k+ E# `' 获取当前目录的路径' Y% j5 q) p% E: }/ [" G/ m$ J(欢迎访问老王论坛:laowang.vip)
Dim folderPath. P2 K U6 h s0 ~(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
9 _" |# N' i3 S4 H
' H1 x) u/ C: T# i( z4 |' 获取用户输入的新文件后缀名(不包含点)
, R8 V, o2 r/ Z8 f- _Dim newExtension# q+ ^* E* P; ~' ?9 F6 C(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")- M! X- d% H; Q# D; s' v(欢迎访问老王论坛:laowang.vip)
# m& Z- ?) A3 k% r' ^0 R, v. Q4 _(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本
- }( \! j6 J8 W D5 z" ]If newExtension = "" Then, c8 A1 H6 Z6 K* G% M: @(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
5 Z3 m# f$ _5 e; T$ w: V. x/ e WScript.Quit, b5 f* j9 ^: c- F! B(欢迎访问老王论坛:laowang.vip)
End If
9 Y. }3 u4 g5 b# {1 Z, v" {1 [9 G" Q1 I$ y6 n8 v$ `(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.), A% {$ u: t( \/ w(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then8 h( ]: s4 T# v' `9 Z m(欢迎访问老王论坛:laowang.vip)
MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
# I- ]8 X1 I3 d WScript.Quit8 T: z, r2 ~4 o' F3 H+ z(欢迎访问老王论坛:laowang.vip)
End If' y1 |) `+ _8 }! M$ v(欢迎访问老王论坛:laowang.vip)
) m8 t' c% J0 B* S(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象. ? V5 ]( p" V/ w& z2 A(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
: A( B5 ?) z2 R3 z) RSet fso = CreateObject("Scripting.FileSystemObject")
4 j/ l6 h1 J; Z% B# Y( w# l8 P; W. D2 f+ A% e; O(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象' ^3 U; q- k/ W& X' O8 O(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)
* g! W8 u: h- M% |, ^) K' c- Z1 ^7 H) t(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录
- U3 j; ~5 j* |# ~Dim hasSubFolders
3 b. |8 @9 ?( r4 WhasSubFolders = folder.SubFolders.Count > 02 x8 Z# w+ F$ g, n- d9 b(欢迎访问老王论坛:laowang.vip)
; L# U% H* g) m5 n$ J c(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
8 o2 e h/ j$ L% j1 ?Dim modifySubFolders5 O) Z% r2 _' c: v8 Y: w3 w9 {$ C; j5 w& m(欢迎访问老王论坛:laowang.vip)
If hasSubFolders Then
I# z# m8 T8 ^ modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件") V: q, l4 m& @, _(欢迎访问老王论坛:laowang.vip)
End If
% d7 j' D" l+ C2 J6 S' S4 K3 V! ~: N/ S! A(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件
# T( L3 V% g4 D! P$ v ^7 sCall ProcessFiles(folder, newExtension)0 ~8 v( X6 v! B) \2 F(欢迎访问老王论坛:laowang.vip)
: y5 H9 M* [. ]# j* S4 `(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件0 l: `+ k1 O5 ~: i) H, d(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then
( i9 _2 w& I0 ~6 J& D For Each subFolder In folder.SubFolders
0 d+ f7 I$ h+ H Call ProcessFiles(subFolder, newExtension) @% a$ C+ ~6 U9 s5 L3 q" t& S: O(欢迎访问老王论坛:laowang.vip)
Next$ i2 W) \3 Q4 S9 J- W6 Q(欢迎访问老王论坛:laowang.vip)
End If( x$ N/ R I9 M& G(欢迎访问老王论坛:laowang.vip)
" W. c7 R2 b& M# L(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成
; V& h) z+ B2 LMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"' m) f8 \6 a- Z/ ] J& z5 w(欢迎访问老王论坛:laowang.vip)
l! y% B. \' x6 w$ p(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
' f& q7 z+ N0 x& ~6 S* U# J p, ASub ProcessFiles(targetFolder, newExtension)2 N: @: u$ z+ N& z+ B5 c, f(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter2 H. Y" Q) Q5 J" V" y4 L0 A(欢迎访问老王论坛:laowang.vip)
Dim nameDict
1 k6 y( S4 m5 `/ K; d8 W0 M* \4 Y0 I(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名# c" U$ [1 S! z; J1 s/ N(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")
0 L0 N0 i f6 D& t/ u/ d1 \
3 E9 j; a" P6 H ' 遍历指定目录下的所有文件9 ?9 M( E3 I, }( J0 t( L(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files0 s0 q4 ~& J, o P& C- R0 y; ]$ L(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
( Y( n; q& _& H) M( d; Y5 f0 H If LCase(fso.GetExtensionName(file)) <> "vbs" Then
! o5 w: c/ @/ w% \: e4 S ' 获取文件的旧名称、基础名称和当前后缀名* }! P2 H1 C" `! \(欢迎访问老王论坛:laowang.vip)
oldName = file.Name
9 S9 M6 F& M! {+ J; C* L3 e1 t baseName = fso.GetBaseName(file). f( d. K: @+ B1 A$ s! T! W(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))
# N3 N' a9 j- ^# [% l5 u
6 }( S6 ~: Y' _ i. i8 Y* Q0 k ' 如果当前后缀名与新后缀名不同,则进行重命名
2 Q) k0 g; D# B* b" U, ~- f% a8 K If currentExtension <> LCase(newExtension) Then
: ~6 V k2 [9 P ' 创建新的文件名
; G% J7 q. ^( B2 g! I newName = baseName & "." & newExtension6 J' z: c0 p. W8 `(欢迎访问老王论坛:laowang.vip)
* O$ j5 k* Q; Z# M' d8 P- }/ L ' 检查是否已有同名文件,如果有,则处理重名
5 J* C+ }8 g9 j8 N3 A- e, n newFileName = newName
t9 m+ x [" q s counter = 1
* l) y' b" M% X+ a M' l ' 确保新的文件名唯一
3 o8 W1 ^. e2 J4 O' k9 y( n While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)' q7 g$ F( h, F+ c# K(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension
3 i' K" Y" \0 ?' p+ Z counter = counter + 1
" T4 X% x5 ~! Y p Wend+ v7 T) t7 m$ Q2 h5 _2 `(欢迎访问老王论坛:laowang.vip)
( k4 q4 _; { {* ]* t5 u. k8 y ' 记录新的文件名0 \, R2 |5 D5 @) A2 `(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True* h, E' N: g/ `) U" z( t(欢迎访问老王论坛:laowang.vip)
4 _1 u5 W& `2 L. A. W5 ^3 q(欢迎访问老王论坛:laowang.vip)
' 重命名文件
4 ?; g0 r' j( A# Z" Q8 h file.Name = newFileName
/ J8 S: w0 k8 A" e4 Z/ H End If
9 ^ O. H% U4 B+ [3 A End If; [0 k5 L$ i( D. D- b(欢迎访问老王论坛:laowang.vip)
Next, e, @/ h/ ? }0 G* X) [(欢迎访问老王论坛:laowang.vip)
End Sub' ~1 o" z" T& Y(欢迎访问老王论坛:laowang.vip)
4 Q4 E* A! K6 K
* W, r. s/ ?) e* K: ]7 t, s% ^# W+ [( ~0 a- [# l(欢迎访问老王论坛:laowang.vip)
|