【问题标题】:Programatically batch files to copy at night以编程方式批处理文件以在夜间复制
【发布时间】:2010-10-27 01:19:31
【问题描述】:

我需要创建一个 Intranet 网站(页面),该网站允许用户指示要复制到生产位置的本地网络文件夹。目前这是在批处理文件中使用 xcopy 手动完成的。

我正在寻找的是触发复制的方法,以便在半夜完成,以及复制文件的方法。我想我可以从我的应用程序运行 xcopy,但这是一个好方法吗?我应该使用 System.IO 名称空间对象来复制文件吗?有没有更好的方法?

应用程序将使用 C# 和 ASP.NET 编写。我们目前使用 .NET 2.0/3.0,但如果 .NET 3.5 包含更好的解决方案库,我不会遇到任何问题。

基本上,用户会指出他们需要复制哪个网络文件夹以及其他一些业务信息。指示的文件夹和所有子文件夹需要复制到目标位置(不是用户设置的)。

如果已经有一个应用程序可以做到这一点,我也不反对。我不需要写已经存在的东西。

【问题讨论】:

  • 感谢 ChirsF 的编辑。

标签: c# asp.net directory xcopy


【解决方案1】:

对于第一个问题(午夜复制),我建议设置一个计划任务来运行已经存在的批处理文件(或任何程序,就此而言)

【讨论】:

  • 示例:c:\Windows\system32\schtasks.exe /Create /st 00:01:00 /tr "c:\myuser\bin\nightwork.cmd" /sc once /tn NameForScheduledTask 。如果您对该字符串执行 Process.Start(),您将安排一个任务在上午 12:01 运行。
  • 我对 Windows 计划任务的一个阻力是对用户的状态反馈。我想调度 PowerShell 脚本可以在这里提供更多选择?
  • 可能...调度程序适用于任意应用程序。就个人而言,我已经在服务器上设置了备份策略,该服务器按计划运行批处理文件,该文件运行带有一些参数的简单 C# 控制台应用程序。
【解决方案2】:

对于调度部分,您可以使用Quartz.NET

使用 System.IO 在 C# 中编写 xcopy 操作并不难。事实上,这会给您最大程度的灵活性。

【讨论】:

  • 与 xcopy 相比性能如何,是否会接近,有没有办法验证复制的文件?
【解决方案3】:

我认为您应该考虑使用Windows Powershell 进行复制(或其他脚本语言,如果您愿意),由Windows Scheduled Tasks 驱动。尽管您可以编写一个应用程序来执行此操作,但我认为拥有一个其他人可以编辑的脚本会更易于维护。

【讨论】:

    【解决方案4】:

    最简单的解决方案是将您的 xcopy 命令包装在一个命令文件中,并安排它在您想要的任何时候作为您的 Web 服务器上的计划任务运行。

    如果您想变得花哨,可以为任务调度程序编写一个 Web 界面 - 我很确定我也看到过此类应用程序的开源示例。

    【讨论】:

      【解决方案5】:

      您已标记此 ASP,但如果您不挑剔,我建议您将 Windows 内置计划任务和 rsync 结合使用。如果确实必须从 Intranet 页面自动执行(并且您在 IE 中),则需要某种形式的 ActiveX 或可下载的脚本/应用程序来配置计划。

      【讨论】:

        猜你喜欢
        • 2016-01-03
        • 1970-01-01
        • 2012-10-30
        • 2012-02-02
        • 2018-05-09
        • 1970-01-01
        • 2014-01-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多