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

如何用VBScript将文件夹修改日期同步为内部MP4文件的修改日期?

解决文件夹修改日期同步为内部MP4文件日期的VBScript问题

针对你的需求——把每个子文件夹的修改日期同步为其内部MP4文件的修改日期,我先帮你分析原代码里的几个关键问题,再给出修正后的可用脚本:

原代码的核心错误

  1. 变量顺序与命名冲突:你先声明了objFile作为FileSystemObject,但后面又用同名变量遍历文件,导致变量混淆;而且strDir的赋值在objFolder = objShell.NameSpace(strDir)之后,这会直接导致脚本报错。
  2. 逻辑指向错误:你试图修改objFolder.Items.Item(strDir)的日期,但objFolder是根文件夹,这里的逻辑完全没有定位到目标子文件夹;另外DateLastModified没有指定所属对象,脚本不知道要取哪个文件的日期。
  3. 遍历对象错误:原代码遍历的是根文件夹的所有项,但没有区分哪些是子文件夹,直接处理所有项会导致非文件夹的项被错误处理。

修正后的VBScript代码

' 创建FileSystemObject对象用于文件系统操作
Dim fso, rootFolder, subFolder, file
Set fso = CreateObject("Scripting.FileSystemObject")

' 指定要处理的根文件夹路径
Set rootFolder = fso.GetFolder("C:\Temp")

' 遍历根文件夹下的所有子文件夹
For Each subFolder In rootFolder.SubFolders
    ' 遍历当前子文件夹内的所有文件
    For Each file In subFolder.Files
        ' 判断是否为MP4文件(不区分大小写)
        If UCase(fso.GetExtensionName(file.Name)) = "MP4" Then
            ' 将子文件夹的修改日期设置为该MP4文件的修改日期
            subFolder.DateLastModified = file.DateLastModified
            WScript.Echo "已同步文件夹 [" & subFolder.Name & "] 的修改日期为MP4文件的日期"
            ' 每个文件夹只有一个MP4,找到后直接跳出内层循环
            Exit For
        End If
    Next
Next

' 释放对象
Set file = Nothing
Set subFolder = Nothing
Set rootFolder = Nothing
Set fso = Nothing

代码说明

  • 用fso作为FileSystemObject的变量名,避免和遍历文件的file变量冲突。
  • 先遍历根文件夹下的所有子文件夹,确保只处理目标文件夹。
  • 在每个子文件夹内遍历文件,找到MP4后直接同步日期并跳出内层循环(因为你提到每个文件夹只有一个MP4)。
  • 明确指定subFolder.DateLastModified和file.DateLastModified,确保属性赋值正确。

运行方式

保存上述代码为CopyDateToParent.vbs,然后在命令行执行:

cscript CopyDateToParent.vbs

脚本会逐个处理C:\Temp下的子文件夹,同步完成后会输出提示信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:53:00