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


10

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

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

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


Какой тип файла вам нужен из любопытства? Не будет ли подстановочного знака недостаточно?
Дэйв

Мне нужно использовать подстановочные знаки (??? - "?" - это подстановочный знак из одной цифры) в команде, так что приведенные выше будут захватывать 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

На самом деле, мне нужно немного подправить. Можно ли это сделать без сохранения структуры каталогов?
Flotsam N. Jetsam

Ха-ха, это то, чего я боялся :) (именно поэтому я специально это сказал). Но что бы вы сделали с дублирующимися именами файлов? Это не может быть сделано с помощью самой xcopy, но вы можете сделать это, отправив что-нибудь в robocopy (или, может быть, просто скопировать, но в пакетном файле). Какая у вас версия Windows?
Рик

Windows 7. Там не будет дубликатов для моего приложения.
Flotsam N. Jetsam

Добавлен способ копирования в один каталог. К счастью, нет необходимости в робокопии. Просто используйте for /r.
Рик

1
Ты жжешь. Хотел бы я снова проголосовать за тебя. Спасибо!
Flotsam N. Jetsam
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.