如何从具有可变文件夹名称的已知目录中复制.xml文件?

时间:2019-01-22 09:16:19

标签: batch-file

我需要将.xml个文件移动到已知的目标位置,但事实是我不知道要从中移动它的父文件夹的名称,因为该名称是随机创建的。

Sourcefolder                                     DestinationFolder
|    |StaticFolder                                  |
|        | AnotherStaticFolder                          |
|           | RandomFolder(YYYY-MM-DD-HH-MM-SS)            | /.xml
|               | StaticFolder
|                 /.xml   

我该如何使用robocopy或任何批处理命令来做到这一点?

随机名称是由一个应用创建的,该应用将文件夹名称创建为YYYY-MM-DD-HH-MM-SS格式。

2 个答案:

答案 0 :(得分:1)

您可以在dir命令(允许通配符)上使用for循环,如下所示:

SET dest=dest_directory
SET source=\Tests\\.*\\Current\\Logs\\.*\.xml$
FOR /F "tokens=*" %%g IN ('dir * /s/b ^| findstr %source%') DO (
    xcopy %%g %dest%
)

dest是DestinationFolder
source是一个与xml文件路径匹配的正则表达式。 (请注意,您必须使用\对路径中的文件分隔符.和文件扩展名\进行转义。因此,\\\.xml都是双重的)

答案 1 :(得分:0)

您只需递归搜索特定目录结构中的任何xml文件。

@echo off
for /R "C:\SourceFolder" %%i in (*.xml) do copy "%%i" "C:\DestinationFolder" 

有关该命令的更多帮助,请参见for /?中的cmd.exe

修改

根据您的评论,虽然仍然不清楚,但似乎您会经常创建一个新的日期目录,因此我们可以按日期(最新的最后一个)对目录进行排序,然后只需从最新的xml复制即可:

@echo off
pushd "C\Program Files\Tests"
for /f %%i in ('dir /b /ad /od') do set "mypath=%%~dpfi"
copy "%mypath%\Current\Logsxml\*.xml" "C:\DestinationFolder"

注意,这是假设您有一个根据您的注释的目录,名为logsxml,如果只是将其命名为包含logs文件的xml,则只需更改最后一行:

copy "%mypath%\Current\Logs\*.xml" "C:\DestinationFolder"

要从日期目录复制所有xml文件,请执行以下操作:

@echo off
pushd "C\Program Files\Tests"
for /f %%i in ('dir /b /ad /od') do (
copy /Y "%%i\Current\Logsxml\*.xml" "C:\DestinationFolder"
)