马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):3 w$ H, q8 {( |7 J5 _6 S" r(欢迎访问老王论坛:laowang.vip)
5 O8 @& [) l9 m(欢迎访问老王论坛:laowang.vip)
& x4 P% L: J* D0 h' `" r1 {4 P(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs' ^# Q9 r3 [4 [) z2 F(欢迎访问老王论坛:laowang.vip)
'
/ Q* e) _& K# I9 w' 功能说明:
8 e. x1 d$ q+ d! P% _' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 1 s( O7 S9 U5 R4 k' n3 k! D7 s. q* Z(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。
/ p- V* l9 A; {( v, F+ w2 j'3 s8 v- v3 ]7 _+ ^( p# X) t* R(欢迎访问老王论坛:laowang.vip)
' 使用说明:
! c% g. ~* Q% ?' c- f: D' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。0 W7 M) M8 Y" B$ F9 j* o(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。' G" n7 M( I- ?* k3 j6 r% y" c(欢迎访问老王论坛:laowang.vip)
' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
' U! X* Y) q2 Q' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。/ k K m4 I5 \. D7 N(欢迎访问老王论坛:laowang.vip)
' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。2 ^7 ~8 f6 j$ u& ?(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
% a: `! a1 y* A9 j5 |
4 C) [4 V! c! u! ], _7 N0 zOption Explicit4 ?. K4 K9 J' }/ d# O# B, K(欢迎访问老王论坛:laowang.vip)
5 z- K3 A& g8 ^8 l3 j2 Q% b' 获取当前目录的路径! z1 @+ l* f5 o3 F4 y(欢迎访问老王论坛:laowang.vip)
Dim folderPath7 u3 F- X( T1 {' P8 L, w' B$ y(欢迎访问老王论坛:laowang.vip)
folderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")3 q9 V9 r( S/ e# i$ e' C(欢迎访问老王论坛:laowang.vip)
- b9 |7 L+ t4 n1 S2 E' 获取用户输入的新文件后缀名(不包含点)
. }- g; p- m) b: Y# I6 l# n8 HDim newExtension1 ^& b: C/ u7 _/ ?3 X' Y- V) O4 b(欢迎访问老王论坛:laowang.vip)
newExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
: J5 {) @$ I6 m8 y) b& I
* u" h% w! o% B- t9 i' 如果用户取消了输入框,则退出脚本
$ t' B! p! |. ~4 ?If newExtension = "" Then
3 R: J S* f/ e, N MsgBox "操作已取消。", vbInformation, "信息"* q" B2 Q3 R# r* z/ N(欢迎访问老王论坛:laowang.vip)
WScript.Quit2 `* a. a/ t" p% I; R% `- w(欢迎访问老王论坛:laowang.vip)
End If
3 q# ~ a' ?. _! i& O1 {6 o% k0 G; ~& S5 ]' u) N, H(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)7 I8 k$ S4 X9 J8 p2 k& n- G; ](欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then
, d, f& t! b+ k2 F MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"9 e' |7 K/ \$ [/ `3 }(欢迎访问老王论坛:laowang.vip)
WScript.Quit! H/ @6 l$ s6 B(欢迎访问老王论坛:laowang.vip)
End If
. k* ?% \1 s. O6 J5 F* {4 G" M! F9 V(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象 M) n& J4 X, h" d) e2 @( S8 E+ O, P+ g(欢迎访问老王论坛:laowang.vip)
Dim fso, folder, subFolder
, v* R& l& L! Z5 WSet fso = CreateObject("Scripting.FileSystemObject")
% U* q- `; a/ I' D2 n! X/ A- y l1 n+ V8 }(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
( ^2 t0 F9 a3 Z, S) w9 ZSet folder = fso.GetFolder(folderPath), {. v* g1 }' v(欢迎访问老王论坛:laowang.vip)
8 x, d' E" [) [) }2 S2 `: P- B(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录/ S* A" S1 A, I1 D(欢迎访问老王论坛:laowang.vip)
Dim hasSubFolders
9 Q- S; x/ a/ p6 D* v: ?% ^0 |# PhasSubFolders = folder.SubFolders.Count > 0
8 t" f# I3 X J& h6 G. F* Z. o2 D% d2 c2 N* ?# {& ?(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件$ N" v5 I+ N& B( r* L(欢迎访问老王论坛:laowang.vip)
Dim modifySubFolders4 d7 E$ F; J$ {. f4 S(欢迎访问老王论坛:laowang.vip)
If hasSubFolders Then
7 z, R! K) z- m9 o4 k- c% Z( u+ D modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
: e% y r0 \3 @$ iEnd If
6 P7 {/ @- r; c4 g* d' ?
7 n1 f& L1 {3 r# e& B$ L' 处理当前目录中的所有文件
+ `% P3 v: k, X0 y* i/ SCall ProcessFiles(folder, newExtension)
9 `$ d: r/ d9 z! ~8 X, q) b: c1 w* b) H$ I; r" }(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件2 W! H0 W4 c- L* K0 c* Y(欢迎访问老王论坛:laowang.vip)
If hasSubFolders And modifySubFolders = vbYes Then
: s' j' ~4 F* b- E For Each subFolder In folder.SubFolders% _( ^" k/ R' w(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(subFolder, newExtension)
; ~3 l7 ^7 {3 W* F- D r. T+ k) f Next
6 M! o7 p' {! m1 N! C# U0 z( [9 rEnd If! K8 J' K; Z% |9 `3 _! |% C E(欢迎访问老王论坛:laowang.vip)
& r) q( y- E# Z/ o+ v- \! T' 提示用户操作完成
2 c- a( R% |4 [; {: q6 w5 `MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成", s/ G/ m) }2 y, `* I(欢迎访问老王论坛:laowang.vip)
; }9 I9 A) T4 Q5 R(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
, b% t, l6 M* [3 tSub ProcessFiles(targetFolder, newExtension)
9 r+ X! h( ?) {0 U Dim file, oldName, baseName, currentExtension, newName, newFileName, counter* N i5 i! m8 J w3 J0 n(欢迎访问老王论坛:laowang.vip)
Dim nameDict
( f0 m/ H9 R2 q0 _
8 C8 ^2 Y. m; h; _1 ?9 r ' 创建一个字典对象,用于存储当前目录内的文件名# x/ l* U n& q, u& d1 @! X7 t$ ^0 F5 U(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary"); x$ }- L0 s0 r3 n(欢迎访问老王论坛:laowang.vip)
& t) A# x2 F2 G5 w A* X(欢迎访问老王论坛:laowang.vip)
' 遍历指定目录下的所有文件
2 n2 Q1 E; E6 O1 R! _' U* O$ Q For Each file In targetFolder.Files
8 {+ q" r; ?5 e ' 跳过后缀名为 .vbs 的文件
; Z6 a) w# e. X, N: L If LCase(fso.GetExtensionName(file)) <> "vbs" Then# B5 _, p E# [0 |+ u' p(欢迎访问老王论坛:laowang.vip)
' 获取文件的旧名称、基础名称和当前后缀名
8 X! d" s C2 o$ H( A oldName = file.Name
7 f/ z1 X9 \2 N' x5 D! y baseName = fso.GetBaseName(file)
" i# I3 {% u8 R) {2 g* N# K currentExtension = LCase(fso.GetExtensionName(file))* j B4 N6 D$ {* K' ]. D(欢迎访问老王论坛:laowang.vip)
/ G/ ]/ ]# f( ^* H! O; X# P ' 如果当前后缀名与新后缀名不同,则进行重命名
/ Q p4 {- L; s If currentExtension <> LCase(newExtension) Then
c: ^! Z$ b7 W3 P3 J ' 创建新的文件名
) x8 c- `1 R0 a( b g7 u newName = baseName & "." & newExtension" c) D; @! h! B! _(欢迎访问老王论坛:laowang.vip)
2 }- d* G8 O1 @4 T(欢迎访问老王论坛:laowang.vip)
' 检查是否已有同名文件,如果有,则处理重名
2 s7 s+ C V. p& Q( I) ~ newFileName = newName
& a* j! O; v0 N5 v9 |7 X' q counter = 1& C9 h+ U" ^1 h6 J& A. O6 ?(欢迎访问老王论坛:laowang.vip)
' 确保新的文件名唯一$ d5 K. S, ^7 P0 L n3 L(欢迎访问老王论坛:laowang.vip)
While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)
- c8 z0 Y. K V; Z6 \ newFileName = baseName & "(" & counter & ")." & newExtension
8 m+ x$ B5 b7 u' ? counter = counter + 1
2 e* b" u2 M5 p Wend
6 t2 [3 M6 L0 c2 ~' `6 k8 B4 O(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名( q% g f0 j7 |" C) d(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True
$ m( k x" A0 i! l: Q" a
9 c4 i9 L h8 m+ \+ X( X5 u ' 重命名文件9 M+ p! Q& n$ L l4 P* c2 m5 |9 h(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName" ~% i1 }; A7 {) O# u2 ]6 t(欢迎访问老王论坛:laowang.vip)
End If
7 C$ v1 V* _: r- c7 m' R End If6 S& m# }6 w% C6 O; F" M' e(欢迎访问老王论坛:laowang.vip)
Next
8 w- v1 C/ q: v4 w, u- [! pEnd Sub
0 t* D1 O" j, F& V G4 A- x& y/ x p& X& b/ r2 R+ p* }: u(欢迎访问老王论坛:laowang.vip)
' E1 t g. @7 r7 N9 H) ]4 b$ o' w2 H3 U2 ](欢迎访问老王论坛:laowang.vip)
|