VBS实战案例

vbs推荐学习资源:

VBS了解一下呗(有没有用学了才知道)_vbs 可以做什么-CSDN博客

注意事项:

出现如下错误时,需要在文件修改后缀vbs时-》另存为-》编码选择ANSI

 案例一:在文件所在目录下,将文件按后缀名分类
' 强制声明变量,要求在使用任何变量之前必须先声明它
Option Explicit


' 引用windows的COM组件对象模型
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")

' 获取当前目录
Dim currentFolder : Set currentFolder = objFSO.GetFolder(".")


' 分类并移动文件
Dim objFile, extension, targetFolderPath, targetFolderName, uniqueName
For Each objFile In currentFolder.Files
    extension = LCase(objFSO.GetExtensionName(objFile.Path))
' 如果存在扩展名
 
        targetFolderName = UCase(extension)&" "&"FILES"
        targetFolderPath = currentFolder.Path & "\" & targetFolderName
        
        ' 确保目标文件夹存在
        If Not objFSO.FolderExists(targetFolderPath) Then
            objFSO.CreateFolder targetFolderPath
        End If
        
        ' 生成唯一文件名并移动文件
        uniqueName = GetUniqueFilename(targetFolderPath, objFile.Name)
        objFile.Move targetFolderPath & "\" & uniqueName
   
Next

' 清理
Set objFSO = Nothing

Function GetUniqueFilename(targetFolderPath, originalFilename)
    Dim baseName, extension, newName, i
    baseName = objFSO.GetBaseName(originalFilename)
    extension = objFSO.GetExtensionName(originalFilename)
    newName = baseName &"."& extension
    i = 1
' 如何分类的文件重名,变成 名字+数字
    Do While objFSO.FileExists(targetFolderPath & "\" &newName)
        newName = baseName & " (" & i & ")" & "."&extension
        i = i + 1
    Loop
' 返回数据
    GetUniqueFilename = newName
End Function
案例二:批量修改当前目录下的指定后缀名
Option Explicit

' 壱明所有使用的变量
Dim strPathName, strOldExtension, strNewExtension, fso, folder, files, file, extension

' 创建FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemObject")



' 设置参数
strPathName = "."
strOldExtension = InputBox("输入要修改的后缀,如 txt")
strNewExtension = InputBox("输入修改后的后缀,如html")

' 检查指定目录是否存在
If Not fso.FolderExists(strPathName) Then
    WScript.Echo "目录不存在: " & strPathName
    WScript.Quit 1
End If

' 获取指定目录下的所有文件
Set folder = fso.GetFolder(strPathName)
Set files = folder.Files

' 遍历并处理文件
Sub ProcessFiles(files)
    Dim file
    For Each file In files
        ' 提取最后一个扩展名
        extension = Split(file.Name, ".")(UBound(Split(file.Name, ".")))
		'MsgBox extension
        
        ' 如果文件扩展名匹配
        If extension = strOldExtension Then
            ' 构建新文件名并尝试重命名
            On Error Resume Next ' 错误处理开关
            Dim newName : newName = Left(file.Name, Len(file.Name) - Len(strOldExtension)  -1) & "."&strNewExtension
            file.Name = newName
            If Err.Number <> 0 Then
                WScript.Echo "无法重命名文件: " & file.Path & " - " & Err.Description
                Err.Clear
            Else
                'WScript.Echo "文件已重命名: " & newName
            End If
            On Error GoTo 0 ' 关闭错误处理开关
        End If
    Next
End Sub

' 调用函数处理文件
ProcessFiles files

' 结束脚本
WScript.Echo "脚本执行完毕。"
WScript.Quit

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值