马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买): l" B" Z' I8 N3 ~(欢迎访问老王论坛:laowang.vip)
* A* `' Y' p, z* e; _- x0 Z(欢迎访问老王论坛:laowang.vip)
2 T" _. s* ~' a( g$ K$ t# [/ h' 修改文件后缀名.vbs
. B! j$ G# q! d7 I+ K) p$ z'
/ ~# X" x1 D; ^$ { G& e' 功能说明:
4 @4 G( ]8 s# P* r q2 t# U' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。
) j8 i* f+ K- S. o( q: |! V' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。
2 N# K" c/ ^2 g9 X'
: @% H; w2 Y4 w+ k9 L' 使用说明:+ w( r2 h& f- Y9 F* }/ n(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。8 @6 F- P( C# D! F1 i3 e: G(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。+ H; N8 W) o3 p9 K(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。 J" }: e! s. o; J6 M(欢迎访问老王论坛:laowang.vip)
' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。% Q/ b G! {+ F2 A(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。
! h# P8 K1 M N5 L1 s$ K* k0 f, A' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
* z, s* x9 ]8 d/ Q9 v$ j$ H; ?5 ^ g7 D+ x( k$ E4 p(欢迎访问老王论坛:laowang.vip)
Option Explicit
% W% u% D6 q, x0 N
, V5 g2 [2 \: O) n' 获取当前目录的路径% F0 v6 v) G6 V; n: n8 W(欢迎访问老王论坛:laowang.vip)
Dim folderPath
* X4 T! d; T+ }) d$ jfolderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")4 }# T; I4 f$ R: I(欢迎访问老王论坛:laowang.vip)
_1 \5 `0 Y( {6 [' 获取用户输入的新文件后缀名(不包含点). s' K z( u# S. P(欢迎访问老王论坛:laowang.vip)
Dim newExtension( y) }, F' U6 q4 s(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")7 F( A6 h* I* j. v2 `- F0 y(欢迎访问老王论坛:laowang.vip)
. U' h ]2 C( U- R' 如果用户取消了输入框,则退出脚本
7 Q& r( a& L$ EIf newExtension = "" Then
9 D" n* N; ~$ M% o5 P MsgBox "操作已取消。", vbInformation, "信息"
0 {/ z5 n3 ~$ B WScript.Quit
/ u1 ?) q9 W: mEnd If
+ ~3 G0 }! D, T+ g9 n' ~7 u% h; C+ Q/ Z5 x# H% y2 q2 H0 S(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)
, |: ^* v% w3 u( xIf InStr(newExtension, ".") > 0 Then
- E# h' j2 @ Q# @3 ` MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
( K/ p' w1 k! e6 N- b WScript.Quit B J. ]3 C, E H ?$ h4 [, r+ J(欢迎访问老王论坛:laowang.vip)
End If6 C5 ~" |8 c1 T* L(欢迎访问老王论坛:laowang.vip)
1 }) d. I0 n! a; I' 创建 FileSystemObject 对象9 A) g5 L6 F* t% N# x+ s+ h(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder+ j# x$ l2 t# u* L x(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")
( T6 {. ~) F$ _9 k, }
# \ }: K( C) c; e7 E0 K2 x' 获取当前目录的 Folder 对象8 J( ]' ^1 X8 [+ q3 n1 k(欢迎访问老王论坛:laowang.vip)
Set folder = fso.GetFolder(folderPath)
) f) _3 ?! J5 H4 R. _
7 {( e& O7 }9 v: _5 T3 E- a' 检查当前目录是否包含子目录
0 z5 S4 X/ n7 oDim hasSubFolders
c4 ?- f0 P3 r* `hasSubFolders = folder.SubFolders.Count > 09 o6 h8 S3 g9 c* w5 \(欢迎访问老王论坛:laowang.vip)
. X3 W' t- f+ J3 M* R(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件8 q0 U3 \1 `) z$ r: ]- U1 g(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders6 o; U7 Y! ?+ v$ Q; f; I2 A(欢迎访问老王论坛:laowang.vip)
If hasSubFolders Then
3 l. X6 g" F, p modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
# }- U! E% w# q9 A6 ~$ N) zEnd If
: Y6 E& C! n/ ~ |8 v: M% p' ]( {' i k( \$ R- O, J2 O(欢迎访问老王论坛:laowang.vip)
' 处理当前目录中的所有文件, E$ j# @! R! m" j9 ^$ W, Q(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension)
& h% i( q2 g' a! Y% D5 R
" B; A8 H6 o% G2 {3 u* ~% j6 E' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
: t' ]" e' t: O& gIf hasSubFolders And modifySubFolders = vbYes Then
; U K; @+ ?, u* C For Each subFolder In folder.SubFolders0 j" D4 S [' x4 I(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)
/ y4 L! B6 u- Z( @. f Next
6 B+ B6 ^$ u) FEnd If7 Z8 {3 d4 D& c(欢迎访问老王论坛:laowang.vip)
2 E5 ]! l- n0 f$ G! N) D' 提示用户操作完成" A! V3 d8 u7 a1 P(欢迎访问老王论坛:laowang.vip)
MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
4 O% I# n# m& _0 ~3 [' x% C6 D
' B# M" T2 e3 P+ q* P; C' 处理指定目录中的文件的子程序
" C7 L3 y2 E7 o' J$ {6 bSub ProcessFiles(targetFolder, newExtension)
4 i: J; b& S1 t; N k8 [ Dim file, oldName, baseName, currentExtension, newName, newFileName, counter* |6 ?# _* b5 }. |4 B% T(欢迎访问老王论坛:laowang.vip)
Dim nameDict- Z8 s( {: j# G- b# }, ?; \% Y(欢迎访问老王论坛:laowang.vip)
5 c4 o0 R9 X% k6 |; s' w(欢迎访问老王论坛:laowang.vip)
' 创建一个字典对象,用于存储当前目录内的文件名4 t" F" { S* {0 L" Q* `(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")) q% U( }4 N1 ?(欢迎访问老王论坛:laowang.vip)
+ Z, t7 I( Y. t4 E2 K# x(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件! V. V) x7 W2 w+ W9 d# T" I; h% Y% F(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files. h: L/ a, F3 I) O9 P1 t! z3 b% R: F(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件
2 E: h$ w2 o- d( n) c& P2 D+ m If LCase(fso.GetExtensionName(file)) <> "vbs" Then# ] b' F3 {) g5 E# A% U5 I(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名: f8 [8 c8 |7 ?# S- T. G(欢迎访问老王论坛:laowang.vip)
oldName = file.Name4 K. N- c# L; f$ F }- k6 W8 v(欢迎访问老王论坛:laowang.vip)
baseName = fso.GetBaseName(file)
. O2 _' w% `" r currentExtension = LCase(fso.GetExtensionName(file))2 |8 h7 Y" B9 m% I(欢迎访问老王论坛:laowang.vip)
. v8 B+ ^& L+ H2 ?9 N. x( d0 a(欢迎访问老王论坛:laowang.vip)
' 如果当前后缀名与新后缀名不同,则进行重命名* G$ r2 O9 i; w(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then
" I: h2 p( S) o; n: k5 _7 }: l ' 创建新的文件名
: Y8 ^, i4 J, J {2 n% }4 w' @ newName = baseName & "." & newExtension0 v( R# f; I! n7 u7 i. B(欢迎访问老王论坛:laowang.vip)
) b8 ~4 R% J5 Z6 g ' 检查是否已有同名文件,如果有,则处理重名! h }6 D* Q' E(欢迎访问老王论坛:laowang.vip)
newFileName = newName5 `6 h! p% y+ L+ |7 k% ](欢迎访问老王论坛:laowang.vip)
counter = 1+ A: [" m' y, W: E2 a8 j1 f i; w(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一
9 c6 m5 s$ g+ i5 l While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
) _/ C8 t) Z# Q. m" ^ newFileName = baseName & "(" & counter & ")." & newExtension( X1 n8 C/ I4 e' M% q5 ~; D(欢迎访问老王论坛:laowang.vip)
counter = counter + 1
3 F( ~" A- X; r! G) J7 d Wend9 ~7 q/ B+ @+ D' t* o' f(欢迎访问老王论坛:laowang.vip)
4 H& u1 |8 Q4 {0 a ' 记录新的文件名4 A9 R. v+ F/ H, H" j(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True: U6 e5 H* @/ w) b( X; K(欢迎访问老王论坛:laowang.vip)
; v. X# D) [6 n% t( s ' 重命名文件
6 {6 y3 L& q! g8 j! X2 S file.Name = newFileName+ D% o- r7 D& H' g1 S$ O, D(欢迎访问老王论坛:laowang.vip)
End If
& X9 Y2 f- E' ?( B7 N End If1 D8 H. |5 H* O7 {(欢迎访问老王论坛:laowang.vip)
Next0 U9 |: t7 F ~8 w) \6 ~7 k3 k3 H& |(欢迎访问老王论坛:laowang.vip)
End Sub; w' f- S5 h5 H4 N1 v$ f4 ]% _0 {5 P(欢迎访问老王论坛:laowang.vip)
/ k) L* G2 e9 @% ?& z(欢迎访问老王论坛:laowang.vip)
3 J; B! t, {3 e6 B% z9 r" j: Z
' K) d: F C. f* k |