Как я могу рекурсивно копировать файлы определенного шаблона в одну плоскую папку в Windows? - PullRequest
57 голосов
/ 29 октября 2008

Мне нужно скопировать набор файлов DLL и PDB из набора папок рекурсивно в другую папку. Я не хочу воссоздавать иерархию папок в целевой папке. Я хочу использовать встроенные средства Windows, например, DOS команды.

Ответы [ 5 ]

104 голосов
/ 29 октября 2008
mkdir targetDir
for /r %x in (*.dll, *pdb) do copy "%x" targetDir\

Используйте / Y в конце вышеуказанной команды, если вы копируете несколько файлов и не хотите отвечать «Да».

36 голосов
/ 03 декабря 2012

команда XCOPY

пример рекурсивного копирования папки:

mkdir DestFolder
xcopy SrcFolder DestFolder /E

(как указано ниже в комментарии после WIKI , эта команда стала доступной после DOS 3.2)

0 голосов
/ 13 июня 2014

Убедитесь, что у вас есть правильные кавычки, если на вашем пути есть пробелы.

Это мое событие после сборки для моего сервера сборки TFS (именно поэтому существует "%%"). Мне нужно было скопировать все тестовые файлы.

if not exist  "$(TargetDir)..\SingleFolderOutput" mkdir -p "$(TargetDir)..\SingleFolderOutput"

for /r **%%x** in (*.dll, *.pdb, *.xml, *.xaml, *.exe, *.exe.config) do xcopy **"%%x"** "$(TargetDir)..\SingleFolderOutput" /Y
0 голосов
/ 12 апреля 2011
@echo off
if %1'==' goto usage
if %2'==' goto usage
if %3'==' goto usage
for /D %%F in (%1\*) do xcopy %%F\%2 %3 /D /Y
for /D %%F in (%1\*.) do call TreeCopy %%F %2 %3
goto end
:usage
@echo Usage: TreeCopy [Source folder] [Search pattern] [Destination folder]
@echo Example: TreeCopy C:\Project\UDI *.xsd C:\Project\UDI\SOA\Deploy\Metadata
:end
0 голосов
/ 29 октября 2008

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

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

...