CMD/BAT - Поиск и копирование определенных файлов из папок

Аватара пользователя
timbird

CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение timbird »

Добрый день!

Помогите решить задачи:

[РЕШЕНО]1.Нужно скопировать .xsl файлы, в названии которых есть постоянная часть, например "QQQ" и "WWW" (пример имени файла: 12sd3_QQQ_1.xsl, 34s1_QQQ. xsl, 2fs45_WWW_we.xsl 6as58_WWW.xsl). Таких файлов много и они лежат на ряду с другими файлами в разных папках на одном общем ресурсе.



Скопировать нужно на ресурс \\share2 с той же структурой каталогов



пример:



Код:

Код: Выделить всё

\\SHARE
|_2012
          |_oct
                 |_dep
                 |       |_01.2012
                 |       |              |_send
                 |       |              |          |_12sd3_QQQ_1.xsl
                 |       |              |          |_2fs45_WWW.xsl
                 |       |              |          |_sdds.xsl
                 |       |              |_control
                 |       |
                 |       |_02.2012
                 |                      |_send
                 |                      |         |_34s1_QQQ. xsl
                 |                      |         |_6as58_WWW.xsl
                 |                      |         |_sdds.xsl
                 |                      |_control
                 |
                 |_ipo
                 |       |_02.2013
                 |       |              |_send
                 |       |              |          |_12sd3_QQQ.xsl
                 |       |              |          |_2fs45_WWW_we.xsl
                 |       |              |          |_sdds.xsl
                 |       |              |_control
                 |       |_05.2012
                 |       |              |_send
                 |       |              |         |_34s1_QQQ. xsl
                 |       |              |         |_6as58_WWW.xsl
                 |       |              |         |_sdds.xsl
                 |       |              |_control
                 |       |
                 |       |_07.2012
                 |                      |_send
                 |                      |         |_34s1_QQQ_2. xsl
                 |                      |         |_6as58_WWW.xsl
                 |                      |         |_sdds.xsl
                 |                      |_control
                 |_cred
                          |_ и т.п.
          |
          |_nov
                  |_и т.п.
|
|
|_2013
          |_и т.п.

2. Как сделать, чтобы допустим эти файлы "12sd3_QQQ_1.xsl" копировались только из папок с определенными именами например "01-NAME-iqwuey" которые находятся на \\server\share ??
Аватара пользователя
megaloman

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение megaloman »

читаем xcopy /?

Код:

Код: Выделить всё

xcopy \\Server1\Share1\Откуда\*WWW*.xsl \\Server2\Share2\Куда\ /s /y
xcopy \\Server1\Share1\Откуда\*QQQ*.xsl \\Server2\Share2\Куда\ /s /y

Если копируем из корня ресурса в корень ресурса, то

Код:

Код: Выделить всё

xcopy \\Server1\Share1\*WWW*.xsl \\Server2\Share2\ /s /y
xcopy \\Server1\Share1\*QQQ*.xsl \\Server2\Share2\ /s /y
Аватара пользователя
timbird

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение timbird »

Georgio, спасибо за ответ, но в моем случае это слишком жестоко.. просто папок для исключения очень много нужно писать..
Аватара пользователя
Georgio

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение Georgio »

Код:

Код: Выделить всё

ROBOCOPY \\SERVER\SHARE \\SERVER\SHARE2 *QQQ*.xsl *WWW*.xsl /S

Зто и весь BAT-файл. И всё, что нужно, скопируется на свои места.
Аватара пользователя
timbird

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение timbird »

megaloman, т.е. придется прописать "откуда" (пути через все папки и подпапки) к нужным файлам в ручную? это будет очень длинный список
Аватара пользователя
timbird

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение timbird »

Georgio, действительно все сработало замечательно, не думал что все так просто. Спасибо.
Аватара пользователя
megaloman

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение megaloman »

timbird, Вы недопоняли. У вас есть сервер \\Server1, на нём есть расшаренный ресурс Share1, на нём может быть папка Откуда (или не может быть -см. второй вариант). Все файлы из папки Откуда по указанной маске из всех подпапок копируются в папку на \\Server2 на ресурс \Share2\ в папку Куда\ с сохранением структуры подпапок.

Во втором варианте, все файлы по маске, в том числе и в корне расшаренного ресурса, переносятся в корень другого расшаренного ресурса.

Второй вариант полностью эквивалентен решению Georgio, за исключением того, что для каждой маски надо написать (практически продублировать с изменением маски файла) свою команду xcopy (это недостаток), но зато xcopy будет работать в любом Windows, а Robocopy в XP еще не было.
Аватара пользователя
timbird

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение timbird »

Цитата megaloman:



а Robocopy в XP еще не было.
CMD/BAT - Поиск и копирование определенных файлов из папок




Была. Ещё в 2000-ой. Но не в поставке. В Resource Kit'ах.
Аватара пользователя
Iska

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение Iska »

Добрый день, в продолжение темы!

Как сделать, чтобы допустим эти файлы "12sd3_QQQ_1.xsl" копировались только из папок с определенными именами например "01-NAME-iqwuey" которые находятся на \\server\share ??
Аватара пользователя
timbird

Re: CMD/BAT - Поиск и копирование определенных файлов из папок

Сообщение timbird »

Цитата timbird:



только из папок с определенными именами
CMD/BAT - Поиск и копирование определенных файлов из папок




Для "ROBOCOPY" это возможно только методом исключения тех папок, которые копироваться не будут (т. е. копируем только папку "01-NAME-iqwuey", а пишем после ключа "/XD" имена исключаемых папок):

Код:

Код: Выделить всё

ROBOCOPY \\SERVER\SHARE \\SERVER\SHARE2 *QQQ*.xsl /S /XD "01-NAME2-iqwuey" "01-NAME3-iqwuey"
Ответить

Вернуться в «Скриптовые языки администрирования Windows»