Рекурсивный поиск имени файла и копирование в MS DOS

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

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

Кто-нибудь может пролить свет на это?

Спасибо,


person Bishnu Paudel    schedule 04.09.2013    source источник


Ответы (2)


Очень просто (хотя вам придется немного конкретизировать, чтобы вы могли настроить код в соответствии с вашей ситуацией.

Базовый код:

@echo off
for /f "usebackq tokens=*" %%a in ("file names.txt") do (
forfiles /p "C:\users\...[path to main file]" /s /m "%%a" /c "cmd /c copy @path "C:\users\...[target path]""

Не уверен, что приведенные выше двойные кавычки будут забиты, если да, то мы можем заменить их на call и enableextensions.

Скажите мне, если это не сработает (поскольку это будет работать только на Win7). Потому что есть много других способов сделать это.

Мона

person Monacraft    schedule 04.09.2013

person    schedule
comment
Спасибо @foxidirve, я только что обнаружил, что имена файлов внутри filenames.txt, предоставленные мне, не имеют расширения. В любом случае, это все картинки с .jpg. Как добавить .jpg к имени файла. Команда в настоящее время говорит «файл не найден». - person Bishnu Paudel; 04.09.2013
comment
Все хорошо. Все работает @echo on for /f "usebackq delims=" %%a in ("e:\diff.txt") do ( for /f "delims=" %%b in (' dir "e:\photos\% %a.jpg" /b /s /a-d ') do ( copy "%%b" "e:\new folder" ) ) - person Bishnu Paudel; 04.09.2013