我需要将.xml
个文件移动到已知的目标位置,但事实是我不知道要从中移动它的父文件夹的名称,因为该名称是随机创建的。>
Sourcefolder DestinationFolder
| |StaticFolder |
| | AnotherStaticFolder |
| | RandomFolder(YYYY-MM-DD-HH-MM-SS) | /.xml
| | StaticFolder
| /.xml
我该如何使用robocopy或任何批处理命令来做到这一点?
随机名称是由一个应用创建的,该应用将文件夹名称创建为YYYY-MM-DD-HH-MM-SS
格式。
答案 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"
)