在子目录中搜索特定目录名称并复制文件(Windows批处理)

时间:2014-10-15 11:44:20

标签: windows file batch-file cmd

需要一些帮助 我有一个目录,其中包含来自各种应用程序的子目录,所以我们说目录是c:\ home,每个应用程序都有一个名为应用程序名称的子目录,所以我们将有

    c:\home\app1
    c:\home\app2

这些应用程序会写入大型日志文件,然后每小时重新创建一次,但会进入另一个目录,根据日期和时间调用,如dd / mm / yyyy / hr,这是在实际的子目录和日志文件中创建的。每个应用程序的每个目录中都有完全相同的名称。所以我们最终会得到这个

    c:\home\app1\1015201410\app1.log
    c:\home\app1\1015201411\app1.log
    c:\home\app1\1015201412\app1.log
    c:\home\app2\1015201410\app2.log
    c:\home\app2\1015201411\app2.log
    c:\home\app2\1015201412\app2.log

我想每小时列出目录并从每个应用程序中收集最新的日志,换句话说,在这个例子中我想收集以下2只因为它们是最新的(结束时间12显示它是第12小时)

    c:\home\app1\1015201412\app1.log
    c:\home\app4\1015201412\app2.log

现在逐个获取文件很容易,但脚本将变得太长,需要在常规基础上进行编辑,以允许将新应用程序添加到目录中。 我能够复制,格式化时间/日期部分等。我只需要找到一种方法来搜索包含最新时间日期的所有子目录的主目录,然后从其他地方复制文件。

所以我尝试了这个。注意timedateformat已预定义:

    for /D %%d in (c:\home\*\%timedateformat%\*) do (
    for %%f in (%%d\.log) do (
    xcopy %%f C:\destination\
    )
    )

但这显然不喜欢*部分,因此我不会得到任何结果。 如果有人能够提供帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

for /d %%F in ("c:\home\*") do xcopy "%%F\%timedateformat%\*.log" "c:\destination\"