编写用于基于日期的文件复制的批处理文件

发布于 2024-08-20 04:42:49 字数 238 浏览 10 评论 0原文

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

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

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

I need to make a batch file that can copy files from one path to another based on parameters.

For example, typing "datecopy -m 8 c:/copyfrom/*.* d:/copyto/*.*", would find all files in c:/copyfrom dated less than 8 months old, and copy them to d:/copyto -folder. Alternately, instead of -m for month, I could use -h for hour or -y for year.

That's not the full program of course, but should get me started. Thanks for any potential tips. :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

满地尘埃落定 2024-08-27 04:42:49

我知道这看起来可能没有回答您的问题,但是通过在 jscript 或 VbScript

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

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

I know this might not look like it's answering your question, but save yourself more pain and heartache than you can imagine by doing this in jscript or VbScript

Lately I've been looking at Windows Powershell, basically Windows Scripting on speed.
However you can be assured that Windows Script Host (jscript & VBScript) is already on Windows from XP onwards (possibly from W2k onwards).

My advice is to NOT use windows batch commands.

习ぎ惯性依靠 2024-08-27 04:42:49

假设您可以组装一组优秀的老式 UNIX 工具,请查看一下 find 实用程序。它有您要求的选项,以及更多。

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

Supposing you can assemble a set of good-old-unix tools, do take a look at the find utility. It has the options you ask for, and more.

find c:/copy/from -atime 240 | xargs cp "{}" c:/copyto
最好是你 2024-08-27 04:42:49

以下脚本将复制 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。)

希望这会有所帮助。

Here is a script that will copy files newer than 8 months.

# 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

The lf (list files) command is pretty flexible. Its help page is at http://www.biterscripting.com/helppages/lf.html .

To run the script, copy and paste the script into file C:/Scripts/TimedCopy.txt, start biterscripting and run this command.

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

Explanation of the timediff argument

"240000000" means 240 days, 00 hours, 00 mins, 00 secs

"120000" means 12 hours, 00 mins, 00 secs

"3000" means 30 mins, 00 secs

"30" means 30 seconds

etc.

(By dated, I assume you mean modified. If you meant created, use $fctime instead of $fmtime in the script.)

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文