马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):9 `. I, B- ~: W& y7 ~, B! F(欢迎访问老王论坛:laowang.vip)
8 D- S( L, X" k5 ?0 p/ w7 V: M3 @6 f0 [+ A5 a- w' o8 g(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs
1 Y3 v) }: i4 h6 F( c6 A( c'
# q' u; `% t0 L) @: F' 功能说明:
* z9 b9 m- R+ c8 U- F; {' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 2 x9 i! V% o7 C; X# ~(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。6 D, Q) n* u% z; l(欢迎访问老王论坛:laowang.vip)
'2 l2 G5 I0 T. A! n% t(欢迎访问老王论坛:laowang.vip)
' 使用说明:
1 @$ s- |- l$ H! ]5 W' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
: Q* q$ Y! D8 G' 2. 双击运行脚本或通过命令行运行。
1 [6 g, V0 @4 ^8 R* R h6 p( p- |! a+ Y' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。) V. G) C8 \9 x(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
1 H5 T( {6 X' ^0 q2 N4 r' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
6 k) v2 K8 W, z* N' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
- b- V" X1 A. k/ a( R' H% B- L" B7 c, N( g, y9 Y$ Q(欢迎访问老王论坛:laowang.vip)
Option Explicit
; L( H9 s4 J" w* C6 o( P9 s0 O3 N. A/ z(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
6 j/ a& u7 D4 BDim folderPath
6 }: U! J% Y" J$ @3 _1 x7 @folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")% V/ `: j# o1 m: f4 D v! s' _) P(欢迎访问老王论坛:laowang.vip)
* ~( V) ~7 `- L) f- s(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)
' v* [( F0 n4 dDim newExtension8 X* V- B* g, q; e( M$ w) Z(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")9 j0 l. I5 @% l3 u(欢迎访问老王论坛:laowang.vip)
# ?! T) ^& ^+ i! [, ?$ _4 w(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本- I: R# o. o: m; D, F4 ~* }$ v8 z(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then
' V5 B7 Q' G; q4 X' A MsgBox "操作已取消。", vbInformation, "信息"% Z; B* u/ c- j4 ?+ t. n; }9 @- `(欢迎访问老王论坛:laowang.vip)
WScript.Quit3 Z5 o0 f% _1 S8 W$ g(欢迎访问老王论坛:laowang.vip)
End If* u: C0 L5 b, m6 b" u(欢迎访问老王论坛:laowang.vip)
! n8 @7 u+ J) n: W$ d(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)5 p; Z- ?" {/ d! D(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then
2 t( e- D, j- J2 d) B* x/ C; K B MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
6 }# q2 k- L9 n5 f: k WScript.Quit
6 W/ ]. x8 T$ |, P. K; vEnd If5 c5 T3 x' T( U$ |/ u; n(欢迎访问老王论坛:laowang.vip)
1 }2 [8 ?3 ] N0 c, E+ ]' 创建 FileSystemObject 对象
+ i, m2 |" v# g- o# _3 m! {, gDim fso, folder, subFolder
2 b7 X# r$ G4 i; o M) L+ \Set fso = CreateObject("Scripting.FileSystemObject")4 m4 R* \7 Y+ ~7 h4 w4 w: r(欢迎访问老王论坛:laowang.vip)
' N) |+ L' C8 V; s. K(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
% c/ d* k( t/ c* N/ o/ \' P% ?Set folder = fso.GetFolder(folderPath)6 {" h5 O: ?- P: E! Q" L1 c" Q& A(欢迎访问老王论坛:laowang.vip)
" V( r( u3 ~1 {+ }& q, V. w- l' 检查当前目录是否包含子目录2 U5 p7 p0 W6 a1 [: E(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders
+ f8 ~' U% o2 o2 i& r# ?hasSubFolders = folder.SubFolders.Count > 0) d6 q6 M% T; r& s g1 u" P0 Y(欢迎访问老王论坛:laowang.vip)
; V3 R! b. ]5 v& t(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件8 x9 l6 H" N# K0 B6 P7 O(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders
6 B" g6 P2 t) e0 Y$ OIf hasSubFolders Then
! d% s! L, h% m+ E& y. _ modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
3 V( z! @$ f2 `( N) rEnd If/ E' ]* ]8 m+ e4 R5 B(欢迎访问老王论坛:laowang.vip)
; q1 q- O8 z9 C* R' l' 处理当前目录中的所有文件. S, x( X6 S3 i# @( `& o(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)0 Q8 Y# w6 _! ~: E5 V* D(欢迎访问老王论坛:laowang.vip)
% n8 Z( b4 T! `6 Q9 C* S(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
" K1 l/ l# e, a: N* iIf hasSubFolders And modifySubFolders = vbYes Then$ f: w" R4 S" E2 l) c7 E(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders8 @+ e3 W) t1 \) `# a, U- r3 t(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)1 U7 l7 e/ I( C0 R S+ ~: H(欢迎访问老王论坛:laowang.vip)
Next
+ }/ _+ R: }" }9 w, UEnd If& o8 W7 V' @ r(欢迎访问老王论坛:laowang.vip)
! d$ U+ i' h& s; L; g(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成$ v) }& K# H8 L; K. G" Z9 y(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成" Q% U2 H) s; ~, A2 B: f; M: k(欢迎访问老王论坛:laowang.vip)
_0 X' S" j: h- g5 o$ x(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
; r* Q6 ]' P# J. ~1 JSub ProcessFiles(targetFolder, newExtension)
5 l6 c8 ~# N8 x: h% U Dim file, oldName, baseName, currentExtension, newName, newFileName, counter- \9 Z) c; s3 i9 g" q(欢迎访问老王论坛:laowang.vip)
Dim nameDict
3 |0 w2 R4 f- U
# `5 k' C0 D+ m# I8 `- P9 S; e ' 创建一个字典对象,用于存储当前目录内的文件名# c) P' s0 O3 x# F$ M' S9 `(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")
$ j% |' t8 \! S$ V$ J+ Y9 ~3 y: A4 n. \ A(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件 C5 e6 I1 t% O. i5 R4 F# h4 T(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files" n' }& H' s! H. m(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件* h! C# ]3 h! v4 x' Z+ S(欢迎访问老王论坛:laowang.vip)
If LCase(fso.GetExtensionName(file)) <> "vbs" Then7 U) g. w# k. S(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名
9 `/ X3 c, R( u oldName = file.Name
7 x+ i, Y$ M2 H' }: X% j baseName = fso.GetBaseName(file)# V* {4 z h. d) \ C(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))" `' Y. N# \1 j(欢迎访问老王论坛:laowang.vip)
5 O, N4 H/ N& F" x" ^ ' 如果当前后缀名与新后缀名不同,则进行重命名
8 G/ V2 w3 D) G# |0 [7 p( E! I If currentExtension <> LCase(newExtension) Then
+ V0 P# ?$ H! j1 T0 b ' 创建新的文件名
, j1 N+ ?% d, b# \/ ] newName = baseName & "." & newExtension8 v5 y( y& B+ C(欢迎访问老王论坛:laowang.vip)
8 u3 b% l m J' B$ U(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名
, C8 X+ H) ^, H G' ]9 x newFileName = newName( B! z3 `. D3 \(欢迎访问老王论坛:laowang.vip)
counter = 1
/ [& ^' {8 V, Y Q7 [ ' 确保新的文件名唯一
+ @& ~8 s" s2 E- ? While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName); @+ @( z# z2 V8 h5 I3 W3 O(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension
/ `2 e) R: ~0 ?. U counter = counter + 1
4 V* K3 f T2 T( F- j Wend* ~ ]9 O" I$ l" M; E6 \(欢迎访问老王论坛:laowang.vip)
# b/ a; B) H$ W1 s1 X2 U' d(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名
& \/ F8 c8 d8 B: d* W& P nameDict.Add newFileName, True
$ D! Q# k( g0 H
* _0 a; z+ q3 h ' 重命名文件3 X/ H% I' D: ]: o% F(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName' }5 I: |1 z* w5 n" P$ a2 s0 E- S(欢迎访问老王论坛:laowang.vip)
End If
2 V+ y$ H8 L& v4 f& P End If
" Y \. F$ N; Y: n3 J Next
# Z$ I& X8 ~4 t' E4 f) TEnd Sub
/ ~) O6 q5 e0 J, @5 q- Q2 Q/ E; r5 S$ z: b' u2 E' C/ ^(欢迎访问老王论坛:laowang.vip)
4 _/ x$ t7 [( ]: P(欢迎访问老王论坛:laowang.vip)
" J) M6 P" u) x8 `! {# Y |