编写批处理文件以进行基于日期的文件复制

时间:2010-02-05 08:01:26

标签: date batch-file copying

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

例如,输入“datecopy -m 8 c:/ copyfrom /*.* d:/ copyto /*.*”,会发现c:/ copyfrom中的所有文件的日期都不到8个月,并将它们复制到d:/ copyto -folder。或者,代替-m代表月份,我可以使用-h代表小时或-y作为年份。

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

3 个答案:

答案 0 :(得分:1)

我知道这可能看起来不像是在回答你的问题,但在jscript or VbScript

中做到这一点可以让你自己避免更多的痛苦和心痛。

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:-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。)

希望这有帮助。