【问题标题】:Writing a batch file for date-based file copying为基于日期的文件复制编写批处理文件
【发布时间】:2011-01-13 10:15:12
【问题描述】:

我需要制作一个批处理文件,可以根据参数将文件从一个路径复制到另一个路径。

例如,键入“datecopy -m 8 c:/copyfrom/*.* d:/copyto/*.*”,将在 c:/copyfrom 中找到所有日期小于 8 个月的文件,并将它们复制到d:/copyto - 文件夹。或者,我可以使用 -h 表示小时或使用 -y 表示年,而不是 -m 表示月份。

这当然不是完整的程序,但应该让我开始。感谢您提供任何潜在的提示。 :)

【问题讨论】:

    标签: date batch-file copying


    【解决方案1】:

    这是一个复制 8 个月以上文件的脚本。

    # Script TimedCopy.txt
    var str from, to, timediff, list, file
    lf -n "*" $from ($ftype=="f") AND ($fmtime > addtime(diff(("-"+$timediff)))) > $list
    while ($list <> "")
    do
        lex "1" $list > $file
        system copy ("\""+$file+"\"") ("\""+$to+"\"")
    done
    

    lf(列出文件)命令非常灵活。它的帮助页面位于http://www.biterscripting.com/helppages/lf.html

    要运行脚本,请将脚本复制并粘贴到文件 C:/Scripts/TimedCopy.txt 中,启动 biterscripting 并运行此命令。

    script "C:/Scripts/TimedCopy.txt" from("c:/copyfrom") to("d:/copyto") timediff("240000000")
    

    timediff 参数说明

    “240000000”表示 240 天 00 小时 00 分钟 00 秒

    “120000”表示12小时00分00秒

    “3000”表示30分00秒

    “30”表示30秒

    等等

    (通过日期,我假设您的意思是修改。如果您的意思是创建,请在脚本中使用 $fctime 而不是 $fmtime。)

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      假设您可以组装一组老式的 unix 工具,请查看find 实用程序。它有您要求的选项等等。

      find c:/copy/from -atime 240 | xargs cp "{}" c:/copyto
      

      【讨论】:

        【解决方案3】:

        我知道这可能看起来不像是在回答你的问题,但通过在 jscript or VbScript 中执行此操作可以为自己节省比你想象的更多的痛苦和心痛

        最近我一直在看Windows Powershell,基本上是关于速度的 Windows 脚本。
        但是,您可以放心,Windows 脚本宿主(jscript 和 VBScript)从 XP 开始(可能从 W2k 开始)已经在 Windows 上。

        我的建议是不要使用 Windows 批处理命令。

        【讨论】:

        • Powershell 如果你安装了它是一个很好的选择
        • 从 Windows 98 开始,甚至。
        • 一两个月后尝试将它用于 Vista,但出现了一些问题。可能会用 Win 7 再试一次。谢谢你的回复顺便说一句,这绝对是一个选择,尽管我迟早还是需要了解基本的批处理文件脚本。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        相关资源
        最近更新 更多