马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?免费注册
x
分享一个自己整的批量处理文件后缀名的脚本(以下开始为脚本内代码,可直接复制粘贴使用,也可投币购买):
* j' c( h9 V* Z+ M" X6 V
" U& ?) Z2 I4 y1 y9 l! ?- }8 Q6 R0 e7 i" K3 n- w(欢迎访问老王论坛:laowang.vip)
' 修改文件后缀名.vbs6 W5 @8 ?: F E1 p2 V8 E(欢迎访问老王论坛:laowang.vip)
'% E5 l6 d" q" m' d( j& |(欢迎访问老王论坛:laowang.vip)
' 功能说明:
4 {' y$ F- v H' 该 VBScript 脚本用于修改当前目录及其子目录中所有文件的后缀名。用户可以指定新的文件后缀名,并且可以选择是否处理子目录中的文件。 5 G5 ], a/ X* o6 [- k& m(欢迎访问老王论坛:laowang.vip)
' 如果在同一目录中存在重名文件,脚本会在文件名后添加数字以确保文件名唯一。脚本会跳过后缀名为 .vbs 的文件。6 T( B Q% F# Z1 {+ M1 b0 Z(欢迎访问老王论坛:laowang.vip)
'
, s, ?, F( G6 S2 N' 使用说明:6 ~& @3 J9 W: L& Q# n6 X% c(欢迎访问老王论坛:laowang.vip)
' 1. 将此代码保存为 .vbs 文件,例如 `ChangeFileExtension.vbs`。) J { {6 x' L9 A$ X- T( f(欢迎访问老王论坛:laowang.vip)
' 2. 双击运行脚本或通过命令行运行。
7 D F3 H6 i$ D3 Y: P9 b' 3. 脚本会弹出输入框,提示用户输入新的文件后缀名(不包含点)。
! F+ l8 R1 A1 o& i Z6 A' 4. 如果当前目录包含子目录,脚本会询问用户是否也要修改子目录中的文件后缀名。选择“是”以处理子目录中的文件,选择“否”以仅处理当前目录中的文件。
; {) a3 v1 |, ~9 j7 k' 5. 脚本会遍历指定目录及其子目录中的所有文件,跳过后缀名为 .vbs 的文件。对于需要重命名的文件,如果遇到重名,脚本会自动在文件名后添加数字(例如 `(1)`, `(2)` 等),仅在当前目录内处理重名。( X( \/ a5 ?/ m2 Y(欢迎访问老王论坛:laowang.vip)
' 6. 完成后,脚本会弹出消息框提示操作已成功完成。
- v, H, _2 ^1 t$ F" l
8 S7 f+ \! a- V3 P. POption Explicit
" ]* J0 E2 s+ ~0 s; h+ o! H( R7 l3 i; Z! f- P(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的路径
5 t1 I$ D ~! I+ x" M$ TDim folderPath
& O8 |- _& Q9 IfolderPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")2 {" s# r0 g S(欢迎访问老王论坛:laowang.vip)
! {+ ^ U9 e8 ]& t9 T/ c8 g! X(欢迎访问老王论坛:laowang.vip)
' 获取用户输入的新文件后缀名(不包含点)
! I+ q' @. c) z: @) _Dim newExtension
" E1 Q. T; [- S8 k+ O L0 CnewExtension = InputBox("请输入新的文件后缀名(不包含点),例如 'txt',将所有文件的后缀改为该值。", "设置新的文件后缀名")
* c& c' [7 {7 v/ p4 k! o' q _0 F( k0 a- A: N/ s(欢迎访问老王论坛:laowang.vip)
' 如果用户取消了输入框,则退出脚本" a) x3 g. f0 Z& T3 w(欢迎访问老王论坛:laowang.vip)
If newExtension = "" Then% h4 s6 k# Y. D4 X2 g* O( [(欢迎访问老王论坛:laowang.vip)
MsgBox "操作已取消。", vbInformation, "信息"
( I3 m) F- i: { WScript.Quit$ S2 C" k0 b5 r2 W(欢迎访问老王论坛:laowang.vip)
End If
( C6 C. } H! g, I5 M. N3 O$ |1 J- o$ s; N8 a8 `# b(欢迎访问老王论坛:laowang.vip)
' 确保新的后缀名不包含点(.)4 k: |: n/ g' @6 p' h3 G(欢迎访问老王论坛:laowang.vip)
If InStr(newExtension, ".") > 0 Then
9 m" f1 b' C4 U MsgBox "请只输入后缀名,不要包含点(.)。", vbCritical, "错误"
% u3 R4 D1 Y. h4 w4 A WScript.Quit
+ p$ z$ m2 S, s* k: E; C2 jEnd If
_- r# x. u. f0 @' F3 o: r2 w5 h& x7 V6 A" t, e7 C(欢迎访问老王论坛:laowang.vip)
' 创建 FileSystemObject 对象
4 x& l) { f9 I( K1 ?Dim fso, folder, subFolder1 O; |% F- x2 `# D A, t( T; `$ h(欢迎访问老王论坛:laowang.vip)
Set fso = CreateObject("Scripting.FileSystemObject")
$ r; r; n9 [8 m# n% O! q' J! T# @: D8 X; Q: w9 ^/ ~% m(欢迎访问老王论坛:laowang.vip)
' 获取当前目录的 Folder 对象
" R: i3 j0 j) P! M! t8 uSet folder = fso.GetFolder(folderPath)
* S% r' p8 B8 r9 z1 o& Z6 m% B- W4 ?(欢迎访问老王论坛:laowang.vip)
' 检查当前目录是否包含子目录
: y* L+ o* j" p# o; p2 J+ U: pDim hasSubFolders* b' x0 z' l8 {+ H! c- c(欢迎访问老王论坛:laowang.vip)
hasSubFolders = folder.SubFolders.Count > 0% h& a4 f, J& J9 d a* J(欢迎访问老王论坛:laowang.vip)
7 }, l3 {* J/ M(欢迎访问老王论坛:laowang.vip)
' 如果当前目录包含子目录,则提示用户是否也要处理子目录中的文件
# y' c, j e4 J3 c/ [Dim modifySubFolders
: a x/ W$ H& g& K M9 P8 C3 RIf hasSubFolders Then7 F% }% \7 P& \# @(欢迎访问老王论坛:laowang.vip)
modifySubFolders = MsgBox("当前目录包含子目录。是否也要修改子目录中的文件后缀名?", vbYesNo + vbQuestion, "修改子目录中的文件")
* z, M% j& L9 G2 g3 iEnd If
0 ]" u- e% V5 ?2 l3 X" n
0 @8 {% m7 B5 D9 x' 处理当前目录中的所有文件2 i$ e# H; [7 w(欢迎访问老王论坛:laowang.vip)
Call ProcessFiles(folder, newExtension) K* h9 U' t( w7 j$ r(欢迎访问老王论坛:laowang.vip)
$ B; O ^) M# C(欢迎访问老王论坛:laowang.vip)
' 如果用户选择是,并且当前目录包含子目录,则遍历所有子目录并处理其中的文件
) u9 l8 E! p# d7 J% FIf hasSubFolders And modifySubFolders = vbYes Then
3 y8 {+ K. N* S" R$ ?$ r For Each subFolder In folder.SubFolders
2 N$ z, M( L. s+ @" o( _3 O Call ProcessFiles(subFolder, newExtension)0 J) E$ W7 C9 v/ a p4 G# l/ ~9 \4 N(欢迎访问老王论坛:laowang.vip)
Next' H% ^* q& Q' Q6 { d2 J `. Y4 m(欢迎访问老王论坛:laowang.vip)
End If, ?5 A1 a6 A( W: ~(欢迎访问老王论坛:laowang.vip)
3 |3 K3 _5 w) O4 M2 z: v- H(欢迎访问老王论坛:laowang.vip)
' 提示用户操作完成
0 a( x' @ ^: Q+ y5 u5 ^MsgBox "所有文件的后缀名已成功更改为 '" & newExtension & "'。", vbInformation, "完成"
6 c X& J; @7 \: L( m8 L$ M/ f) }" ?# Y(欢迎访问老王论坛:laowang.vip)
' 处理指定目录中的文件的子程序
7 @ H! Z) {8 H$ FSub ProcessFiles(targetFolder, newExtension)/ [$ ?" E0 s) {1 W0 V9 f(欢迎访问老王论坛:laowang.vip)
Dim file, oldName, baseName, currentExtension, newName, newFileName, counter
0 B) P! m* f/ Z Dim nameDict/ e% f5 n$ t% }7 _* z" T(欢迎访问老王论坛:laowang.vip)
8 O7 J" e- f6 A ' 创建一个字典对象,用于存储当前目录内的文件名4 K* V$ k K) N# n(欢迎访问老王论坛:laowang.vip)
Set nameDict = CreateObject("Scripting.Dictionary")2 ~: b; G, D- D: Z3 w% V* N0 a(欢迎访问老王论坛:laowang.vip)
* x" L b; o) l$ B ' 遍历指定目录下的所有文件! b' |; X7 s) S9 ~/ R% ^(欢迎访问老王论坛:laowang.vip)
For Each file In targetFolder.Files2 J3 a- H: G. S r, E(欢迎访问老王论坛:laowang.vip)
' 跳过后缀名为 .vbs 的文件9 \( F% c- h+ ?( ^3 m$ K4 B(欢迎访问老王论坛:laowang.vip)
If LCase(fso.GetExtensionName(file)) <> "vbs" Then
5 x! S, |( |4 w$ }' B ' 获取文件的旧名称、基础名称和当前后缀名3 |: u: S( Q# U( [" {* ^(欢迎访问老王论坛:laowang.vip)
oldName = file.Name
, J6 {6 X8 s4 @9 N baseName = fso.GetBaseName(file)
. l% @+ d: l \ Y# X, L$ F% M currentExtension = LCase(fso.GetExtensionName(file))
+ F8 j, x7 M/ |
q, x1 N6 `- q% {- D" U" | ' 如果当前后缀名与新后缀名不同,则进行重命名# D2 [$ ]1 I/ L& ^7 C; Y(欢迎访问老王论坛:laowang.vip)
If currentExtension <> LCase(newExtension) Then% a* N1 i! m, F5 _ }7 ]; a' J(欢迎访问老王论坛:laowang.vip)
' 创建新的文件名
5 A6 r; b+ F/ ?. { newName = baseName & "." & newExtension' n+ X6 H ]3 F* |9 X3 d# A(欢迎访问老王论坛:laowang.vip)
( d/ K& S0 x+ u5 U7 |2 m! \ ' 检查是否已有同名文件,如果有,则处理重名
( Y' ~; w1 U9 h newFileName = newName0 ^( a& B" B' }( }7 x2 t* V3 |5 g: s(欢迎访问老王论坛:laowang.vip)
counter = 1
: r$ W- I/ @% }! w ' 确保新的文件名唯一
3 m) h7 X, I, B While nameDict.Exists(newFileName) Or fso.FileExists(targetFolder.Path & "\" & newFileName)2 ~* i. s' n: G/ p3 M# B% h(欢迎访问老王论坛:laowang.vip)
newFileName = baseName & "(" & counter & ")." & newExtension
# b" P; Q7 e5 Y counter = counter + 1! q) R) ]/ K3 Z# i& Z" Y(欢迎访问老王论坛:laowang.vip)
Wend) H" e0 E4 ^$ P(欢迎访问老王论坛:laowang.vip)
4 q6 M1 Q2 q! F9 Z(欢迎访问老王论坛:laowang.vip)
' 记录新的文件名, x' ~& T; v& b(欢迎访问老王论坛:laowang.vip)
nameDict.Add newFileName, True+ d) m3 Z& A0 U5 k/ d(欢迎访问老王论坛:laowang.vip)
4 R0 [" H% _1 o6 D(欢迎访问老王论坛:laowang.vip)
' 重命名文件7 ~" W' M4 d, v2 b: v% C) ?& J(欢迎访问老王论坛:laowang.vip)
file.Name = newFileName
) \5 M' K' A2 C End If
! A/ B* P( e- X6 U! t6 a End If
4 C$ w( Y# P' d9 n1 q Next
& q4 U( v* O5 `# zEnd Sub
2 t8 {7 d. G* x [- P& ?1 V# ] s0 a( t; s9 _# ], l2 D(欢迎访问老王论坛:laowang.vip)
6 [+ F/ Q& j5 ?& P- x(欢迎访问老王论坛:laowang.vip)
U; J# y) \* T( a; f(欢迎访问老王论坛:laowang.vip)
|