You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VBScript按文件名年月字符串批量移动温度数据文件到对应分类目录

报错原因

  • 800A0414错误:你把执行逻辑包裹在了Sub Dateien_verschieben()自定义过程中,但WScript.Quit是VBScript宿主的顶层方法,不允许在过程内部调用,直接移除外层的Sub定义即可解决该问题。
  • 800A0046错误:该错误属于权限/路径类错误,常见触发原因有三个:你硬编码的目标文件夹不存在、目标路径下的同名文件正在被其他程序占用、你对Temperature文件夹没有写入权限。

优化实现方案

你原有的硬编码12个月路径、单年份匹配的写法完全不适用于30年的文件处理场景,以下是可自动解析文件名、自动创建目标目录的通用方案,无需提前手动创建任何文件夹,也不需要逐个写年月变量:

Option Explicit
Dim fso, sourceFolder, sourcePath, file, fileName, yearStr, monthStr, targetPath, moveCount
' 配置源文件夹路径,替换为你自己的Temperature目录完整路径
sourcePath = "C:\Users\…\Temperature"
Set fso = CreateObject("Scripting.FileSystemObject")
Set sourceFolder = fso.GetFolder(sourcePath)
moveCount = 0

For Each file In sourceFolder.Files
    ' 仅筛选符合tx_YYYYMMDD.nc命名规则的文件
    If LCase(fso.GetExtensionName(file.Name)) = "nc" And Left(LCase(fso.GetBaseName(file.Name)), 3) = "tx_" Then
        fileName = fso.GetBaseName(file.Name)
        ' 从文件名提取年份、月份
        yearStr = Mid(fileName, 4, 4)
        monthStr = Mid(fileName, 8, 2)
        ' 生成目标路径
        targetPath = sourcePath & "\T_" & monthStr & "\T_" & monthStr & "_" & yearStr
        ' 自动创建不存在的层级目录
        If Not fso.FolderExists(targetPath) Then
            fso.CreateFolder targetPath
        End If
        ' 覆盖目标路径的同名文件
        If fso.FileExists(targetPath & "\" & file.Name) Then
            fso.DeleteFile targetPath & "\" & file.Name, True
        End If
        ' 执行移动操作
        fso.MoveFile file.Path, targetPath & "\"
        moveCount = moveCount + 1
    End If
Next

' 输出执行结果
If moveCount > 0 Then
    MsgBox "已成功移动 " & moveCount & " 个文件"
Else
    MsgBox "未找到符合规则的文件"
End If

' 释放对象
Set fso = Nothing

使用说明

  • 替换代码中sourcePath变量的取值为你本地Temperature文件夹的完整绝对路径
  • 将代码保存为后缀为.vbs的文件,右键点击选择「运行」即可执行
  • 执行结束后会弹窗提示已移动的文件总数

内容的提问来源于stack exchange,提问作者ebcs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:18:04