MS DOS命令)将与目录结构中的模式匹配的文件复制到本地目录

时间:2011-09-26 15:16:25

标签: command-line batch-file dos

我有一份定期运行并将文件存档到文件夹结构中的作业,如下所示:

ArchiveFolder
    TimestampFolder
        JobnameFolder
            job<timestamp>.xml

对于给定的作业,我想将存档文件夹中的所有xml文件收集到一个平面目录(没有子目录,只是所有文件),而不必深入到每个文件,检查正确的工作,然后复制文件。

似乎应该有一种相当直接的方式来做到这一点。有什么建议吗?

编辑:我想我不清楚这里。 TimeStampFolder的名称类似于2011-07-24,JobnameFolder的名称将为FooFeedBarFeed,作业文件的名称将为job2011-07-24.xml。有数百到数千个TimeStampFolders,每个可能有一个或多个作业文件夹。给定一个特定的作业名称,我想收集与该作业类型匹配的所有目录中的所有文件,并将它们转储到本地文件夹中,没有子目录。

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
FOR /R %%v IN (job*.xml) DO COPY "%%v" c:\out\

答案 1 :(得分:0)

EDIT1:

SET JOB=JobName
SET OF=OutputFolder

START /wait NET USE Z: "\\ServerName\Sharename\ArchiveFolder" password password_here /USER:domainname\username /P:NO
PUSHD Z:\
FOR /F "USEBACKQ tokens=*" %%A IN (`DIR /b /a:d /s ^| FIND /I "%JOB%"`) DO (
 FOR /R %%F IN (%%A) DO (
  COPY /Y "%%~fF" "%OF%"
 )
)
POPD

它基本上找到ArchiveFolder的每个子目录,其中包含JobName,然后挖掘它找到的每个子目录,从而将文件复制出来。

EDIT2:

添加了NET USE以访问您的网络共享以执行文件任务。如果您的本地计算机已将UNC分配给驱动器,则可以删除NET USE命令行并将Z:更改为指定的驱动器。