【问题标题】:Batch File [scheduled task] copying all .txt files under a rot directory批处理文件[计划任务]复制一个rot目录下的所有.txt文件
【发布时间】:2014-12-08 12:10:05
【问题描述】:

我在很多子目录中有 .txt 文件,这些目录不断接收新文件 [日志],但旧文件没有被删除。

我需要将各个子文件夹下的文件与包含所有 .txt 文件的文件夹保持同步。由于我们有很多文件并且它们一直被创建而不是被删除,我想知道是否有一个 .bat 文件代码我可以使用并安排每分钟运行以保持这些文件同步?以某种方式使用 robocopy 会更好吗?

【问题讨论】:

  • 您想从一个位置或另一个位置删除文件,还是让它们完全同步?
  • @mojo 我无法删除它们,我需要让它们保持同步。
  • robocopy /MIR 应该镜像内容(包括在目标位置删除文件,如果它们不再存在于源中)。

标签: windows batch-file batch-processing


【解决方案1】:

根据您需要在多少台计算机上运行此程序,我建议您使用 Microsoft SyncToy2.1 之类的工具来同步文件,然后像往常一样在批处理文件中删除。

例如,为每个文件夹创建一个文件夹同步对,然后使用批处理文件调用该过程,然后删除:

“C:\Program Files\SyncToy 2.1\SyncToyCmd.exe -R"
/wait
Del c:\PathToTxtFiles\*.txt /f
Exit

使用 -R 开关调用“SyncToyCmd.exe”将告诉它同步所有文件夹对,然后运行删除命令以清除所有旧文件。 HowToGeek 对 SyncToy 的工作原理以及如何根据您的情况进行最佳设置做了很好的解释: http://www.howtogeek.com/howto/25046/schedule-synctoy-to-run-automatically-with-task-scheduler-in-windows-7/

编辑:我没有注意到你说你不想删除它们的地方(我没有像我应该的那样注意)

在这种情况下,我可以建议将两个批处理文件命名为一个 sync.bat,其中包含以下两行:

XCOPY "%1" "%2" /D /I %3
XCOPY "%2" "%1" /D /I %3

第二个用以下行命名任何东西:

SYNC "C:\My Project" "\\DELL\My Project" /S

目的是第二个将使用您在第二个中输入的参数调用第一个(即它将为“C:\My Project”调用 xCopy 到服务器共享“\DELL\My Project”)。 /D 开关告诉它将较新的文件从源复制到目标,如果您不想要双向同步,您可以删除第二行; /I 告诉它目标是一个目录(它不会询问它是您要复制到的目录还是文件)。您可以在第二个中省略 /S,在第一个中省略 %3。

Tech-Pro.net 有一篇文章很好地解释了它(使用我使用的相同代码)位于此处: http://www.tech-pro.net/howto_033.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多