Как скопировать .xml файлы из известного каталога с именем переменной папки? - PullRequest
0 голосов
/ 22 января 2019

Мне нужно переместить .xml файлы в известное место назначения, но дело в том, что я не знаю имя родительской папки, из которой я хочу ее переместить, потому что имя создается случайным образом.

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

Как я могу сделать это с помощью robocopy или любой пакетной команды?

Случайное имя создается приложением, которое создает имя папки в формате YYYY-MM-DD-HH-MM-SS.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вы просто рекурсивно ищите любой 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"
)
0 голосов
/ 22 января 2019

Вы можете использовать цикл for для команды dir (которая позволяет использовать символы подстановки) следующим образом:

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 - папка назначения
source - это регулярное выражение, которое соответствует пути ваших XML-файлов. (Обратите внимание, что вы должны экранировать разделители файлов \ в пути и . в расширении файла с \. Отсюда двойные \\ и \.xml)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...