Как использовать DIR и копировать вместе, чтобы искать каталоги и копировать в папку?

10

Мне нужно найти в указанной папке и ее подкаталогах файл (ы), а затем скопировать их в указанную папку где-нибудь еще. Можно ли использовать dirи copyс трубкой?

dir /s foo???.txt | copy g:\someplace

Выше не работает. Левая сторона канала находит то, что я хочу, но я не могу заставить его скопировать найденные файлы. Я использую командную строку Windows 7.

Flotsam N. Jetsam
источник
Какой тип файла вам нужен из любопытства? Не будет ли подстановочного знака недостаточно?
Дэйв
Мне нужно использовать подстановочные знаки (??? - "?" - это подстановочный знак из одной цифры) в команде, так что приведенные выше будут захватывать foo_42, foo_01 и т. Д., И они будут в разных подпапках.
Flotsam N. Jetsam

Ответы:

10

Вы можете просто использовать xcopy:

xcopy /s foo???.txt g:\someplace

Это будет содержать структуру каталогов.

Если вам не нужна структура каталогов, вы можете сделать следующее:

for /r %i in (foo???.txt) do xcopy /Y "%i" g:\someplace

Если вы используете это в пакетном файле, вы должны удвоить %примерно так:

for /r %%i in (foo???.txt) do xcopy /Y "%%i" g:\someplace
Rik
источник
На самом деле, мне нужно немного подправить. Можно ли это сделать без сохранения структуры каталогов?
Flotsam N. Jetsam
Ха-ха, это то, чего я боялся :) (именно поэтому я специально это сказал). Но что бы вы сделали с дублирующимися именами файлов? Это не может быть сделано с помощью самой xcopy, но вы можете сделать это, отправив что-нибудь в robocopy (или, может быть, просто скопировать, но в пакетном файле). Какая у вас версия Windows?
Рик
Windows 7. Там не будет дубликатов для моего приложения.
Flotsam N. Jetsam
Добавлен способ копирования в один каталог. К счастью, нет необходимости в робокопии. Просто используйте for /r.
Рик
1
Ты жжешь. Хотел бы я снова проголосовать за тебя. Спасибо!
Flotsam N. Jetsam