我有一份定期运行并将文件存档到文件夹结构中的作业,如下所示:
ArchiveFolder
TimestampFolder
JobnameFolder
job<timestamp>.xml
对于给定的作业,我想将存档文件夹中的所有xml文件收集到一个平面目录(没有子目录,只是所有文件),而不必深入到每个文件,检查正确的工作,然后复制文件。
似乎应该有一种相当直接的方式来做到这一点。有什么建议吗?
编辑:我想我不清楚这里。 TimeStampFolder的名称类似于2011-07-24
,JobnameFolder的名称将为FooFeed
或BarFeed
,作业文件的名称将为job2011-07-24.xml
。有数百到数千个TimeStampFolders,每个可能有一个或多个作业文件夹。给定一个特定的作业名称,我想收集与该作业类型匹配的所有目录中的所有文件,并将它们转储到本地文件夹中,没有子目录。
答案 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:更改为指定的驱动器。