马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
+ V9 Z5 d7 S) F& j3 S( g p& I6 _9 n9 {6 {; ]# n y7 S. P1 p(欢迎访问老王论坛:laowang.vip)
; u, L) ]" O r3 `& ^' 修改文件后缀名.vbs
2 d8 ~: c; k3 A1 ]/ O# ['6 [) s( y) y8 o" K(欢迎访问老王论坛:laowang.vip)
' 功能说明:
/ E0 m7 L# `$ D* n' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
, @" @ `$ d8 U! k5 K& E' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。+ `' j0 ~ l- H: T% S% e6 Y(欢迎访问老王论坛:laowang.vip)
'
! }- a" o, I! q, X4 j' 使用说明:
# Y8 T' U" g6 l6 v: E' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。
8 Q Z' p7 ]5 N( R7 u" S+ L' 2. 双击运行脚本或通过命令行运行。# I! |1 v3 L. |. Z9 _) V8 z/ Q(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。. {, k, C2 J+ v5 E! n: q: u(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。6 L; D- ]% J8 d) u0 O* S. o* v(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
X3 k I$ S' U) C% Q$ {' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
5 T# B* [: v( j# H* F: [
6 ~ I4 ~( U: A1 J7 MOption Explicit% b3 i1 x% h5 E: c0 d- @! r) k6 l6 ?(欢迎访问老王论坛:laowang.vip)
. A. q4 j% Q3 R( j( _0 m(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径+ G4 S, k9 [5 L |' w3 f$ R(欢迎访问老王论坛:laowang.vip)
Dim folderPath
2 M9 } o7 O% S# `7 _: nfolderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
9 A4 h8 I9 |% D8 U
! b3 R9 Y+ f5 l3 X- o' 获取用户输入的新文件后缀名(不包含点)
8 h$ K5 Y" J4 bDim newExtension
7 l. N9 A1 u0 [# @newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")! Y! S! W3 e( X2 s& X(欢迎访问老王论坛:laowang.vip)
) l% n' d3 Q' `' 如果用户取消了输入框,则退出脚本
8 ?* {3 Q3 H' A4 F4 K3 R9 E, n* p0 ]If newExtension = "" Then+ {, I, w2 b, n& M(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"+ ~: ^5 i( N; z/ ?3 {' h(欢迎访问老王论坛:laowang.vip)
WScript.Quit
% z* z! O0 E6 u- d+ `End If
?9 C( k1 f, y0 s: b
. ]) ^' w1 U3 y+ s$ i0 E3 C, p' 确保新的后缀名不包含点(.)# y: c0 g+ ~) o; G3 O# y(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then
# R( ?# q3 u! }, N MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
6 `) [" b- K a WScript.Quit
7 E8 r1 I! V* h' ?$ @End If4 o0 K1 i2 j, a# {. X* o% u(欢迎访问老王论坛:laowang.vip)
' a+ S& |$ {! N( p1 @: q( O(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象& w( b9 p. F: v3 P/ h1 i(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
, ^9 K8 |2 L0 j1 Y$ L$ qSet fso = CreateObject("Scripting.FileSystemObject")9 u" y* e2 ]+ N# L" r(欢迎访问老王论坛:laowang.vip)
6 _1 @& q4 r% G0 V5 W, r0 {, i' 获取当前目录的 Folder 对象
' N8 l- w t8 Z( d! lSet folder = fso.GetFolder(folderPath)
; Z" l' x0 H7 v' j3 A3 R ]3 R: x' Z4 ^/ Y1 e( M(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录
9 G. H+ K: A9 @, jDim hasSubFolders
: P# B/ |% X& D" G7 B& f$ F& @hasSubFolders = folder.SubFolders.Count > 0
, X/ h5 o% H& [: r6 x5 g1 A. G, \# o- O7 g: U- s5 x(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
+ k& V9 R( |7 i4 D& B/ cDim modifySubFolders
* R# Q! Q% q1 |! B% y1 YIf hasSubFolders Then6 {, C4 H& h, y( J4 {( Z9 c* A(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")* O" S i. w$ W% t) d4 }- Q' I(欢迎访问老王论坛:laowang.vip)
End If; l8 x0 E3 m9 R(欢迎访问老王论坛:laowang.vip)
$ q. L9 r6 d% c1 }/ F+ H k3 z) Z(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件
- Q* d: f6 L" v2 b, a W) yCall ProcessFiles(folder, newExtension)
: Z1 z. C, W. E8 P+ Q+ A
# p4 ]2 N$ a$ h' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件) Y0 \) H- P; u(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then- f$ \" l; j" q8 d4 n, b. A( k(欢迎访问老王论坛:laowang.vip)
For Each subFolder In folder.SubFolders' T# v% x5 F1 p(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)
0 v2 Q! l, ?5 m- k9 D# y1 { Next6 Z& A* k G5 ]2 X0 I3 ~(欢迎访问老王论坛:laowang.vip)
End If
! h. C- C5 o0 |( {% _ e+ A6 V4 h$ w/ ~, Z" ?2 L(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成
' B( n! b3 s- ^5 i2 SMsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
2 [! H* l! X4 u( n- d9 U3 J2 N( B# k7 |/ J9 e3 M(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序6 ~9 {. g0 |) J(欢迎访问老王论坛:laowang.vip)
Sub ProcessFiles(targetFolder, newExtension)
) ]8 E2 ?# R8 ]% ^ Dim file, oldName, baseName, currentExtension, newName, newFileName, counter2 @) }5 p2 J: m7 S; e' M(欢迎访问老王论坛:laowang.vip)
Dim nameDict
4 k& g! d1 W# P a$ k. T4 `5 }* S" ^# y7 d- F( Q" ^(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名- j% J# y/ x' [! t" f. C4 p(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary") d# o7 K& I. w(欢迎访问老王论坛:laowang.vip)
o o. V+ Q7 f3 f; Q( p2 x; g0 s. {(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件
2 [+ w, b6 g1 j! J For Each file In targetFolder.Files/ L! U* j& i% E' t8 ^' P( S/ j- V3 s(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件* {% [- W! t! r. v: \/ b(欢迎访问老王论坛:laowang.vip)
If LCase(fso.GetExtensionName(file)) <> "vbs" Then% \& j! q8 ]' v(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名% {# O1 u5 @' n(欢迎访问老王论坛:laowang.vip)
oldName = file.Name- @2 g+ q! W* k8 t+ x4 C( b- m% T# ?; a(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)9 f9 `$ J2 W( J( s7 R' @3 _& c: t) q(欢迎访问老王论坛:laowang.vip)
currentExtension = LCase(fso.GetExtensionName(file))! Q, B+ v. }. I1 n4 i% k( ?$ W(欢迎访问老王论坛:laowang.vip)
6 w; N9 Z' N2 ` ' 如果当前后缀名与新后缀名不同,则进行重命名6 b- H; f6 s* @+ U& h(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then
: h/ t/ Q4 s2 { ' 创建新的文件名
4 D4 z" ^) T; d newName = baseName & "." & newExtension+ |0 L% k! A' ?% w O, t+ ~(欢迎访问老王论坛:laowang.vip)
( z, c+ Z) Z+ C7 }, t(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名
W2 b, M8 d9 ~& Y9 C+ v. ] newFileName = newName Y; b! ?3 b5 g& y$ R! @7 Q/ S(欢迎访问老王论坛:laowang.vip)
counter = 1
3 i j9 c" ^, ?7 ?1 V/ R ' 确保新的文件名唯一
& S S, \& E0 P8 J+ }. B While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName) p% Q$ m4 F% h& N4 S- ~(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension; } d9 V6 \% N# Q% G(欢迎访问老王论坛:laowang.vip)
counter = counter + 1/ O8 k9 s! f5 r B* h2 @' w* Z9 _(欢迎访问老王论坛:laowang.vip)
Wend! p+ v& h( d7 U8 R! x(欢迎访问老王论坛:laowang.vip)
9 w) Z. K( @" t) \1 v+ y(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名$ [4 p% M$ a# Y0 ]( Y" N(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True, o) z4 \1 X% D* {2 k/ H' i(欢迎访问老王论坛:laowang.vip)
6 D, i3 q4 R2 ]6 a' T* c(欢迎访问老王论坛:laowang.vip)
' 重命名文件
/ a! }9 W1 p+ T w q' { file.Name = newFileName
! N7 u) s7 {6 w8 [# P* o% a+ }3 \ End If& }0 z q# W. {(欢迎访问老王论坛:laowang.vip)
End If
: F6 P% o0 c x: S/ R Next+ T+ _" e; D# @" E9 V9 }/ t8 B" g(欢迎访问老王论坛:laowang.vip)
End Sub2 l: t( @. X7 }/ m Y: F0 n% c(欢迎访问老王论坛:laowang.vip)
q8 O9 ]4 Z; D: q% @4 _, Z5 d) Q7 t3 C. d(欢迎访问老王论坛:laowang.vip)
) k6 @, Y3 f3 D# u6 w |