![Как скопировать все файлы с определенным расширением в один каталог (без структуры каталогов)?](https://rvso.com/image/1311333/%D0%9A%D0%B0%D0%BA%20%D1%81%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%20%D1%81%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%BC%20%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC%20%D0%B2%20%D0%BE%D0%B4%D0%B8%D0%BD%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%20(%D0%B1%D0%B5%D0%B7%20%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2)%3F.png)
Я пытаюсь скопировать все файлы в различных подкаталогах, имеющих расширение, JPG
расположенное на, C:
в один каталог на D:
. Я не хочу сохранять структуру каталогов.
Вот насколько мне удалось дойти:
for /r C:\ %f in (*.jpg) do @copy "%f" D:\pictures
После этого меня спрашивают, хочу ли я перезаписать D:\pictures
. Если я отвечаю yes
, то получаю один файл, а если отвечаю нет, то файлы не копируются.
Я также пробовал добавлять /y
в конец команды, но это просто перезаписывает предыдущие файлы, оставляя только последний.
решение1
Это должно сработать:
for /r C:\ %f in (*.jpg) do @copy "%f" D:\pictures\
Объяснение:
Команда copy "%f" D:\pictures
копирует файл %f
в указанное место D:\pictures
, т. е. файл pictures
в каталоге D:\
.
Добавление завершающего символа \
гарантирует, что copy
он будет рассматриваться pictures
как каталог.
Если вы копируете несколько файлов в одно место (например, copy *.* D:\backup
), copy
автоматически обрабатывается backup
как каталог. Но это не тот случай, когда вы копируете один файл.
решение2
для /R c:\ %%1 в ("*.txt") сделать @xcopy "%%1" d:\txttemp%%~p1 /e/i/s/q/h
этот код скопирует без перезаписи и создаст папки и подпапки