Скопируйте первый файл для нескольких папок в другое место

У меня около 1000 папок на жестком диске. Каждая папка содержит около 100 файлов .jpg. Теперь мне нужно скопировать из каждой папки файл "page (1).jpg" в определенную папку (каждая папка содержит файл "page (1).jpg"). И еще одно... В конце концов, после копирования каждый файл .jpg из определенной папки должен иметь имя, аналогичное папке, из которой он был скопирован.

Как это сделать самым простым способом. Может быть, с каким-то пакетным файлом или чем-то еще...


person user3626223    schedule 15.02.2015    source источник
comment
Описанный сценарий не совсем ясен. Вам нужно скопировать только ОДИН файл в целевой каталог, и он должен иметь имя исходного каталога?   -  person npocmaka    schedule 15.02.2015
comment
Да, это проблема для цикла for, но... я не эксперт в программировании пакетных файлов...   -  person user3626223    schedule 15.02.2015
comment
Да, только ОДИН файл, и это страница (1).jpg   -  person user3626223    schedule 15.02.2015


Ответы (1)


не проверено (нужно изменить имена root_dir и target_dir):

@echo off

set "target_dir=E:\scriptests\redirection"
set "root_dir=E:\scriptests\labels"
pushd %root_dir%
setlocal enableDelayedExpansion

for /f "tokens=* delims=" %%a in  ('dir /b /s  "page ?1?.jpg"') do (
    set "fdir=%%~dpa"
    set stripped=!fdir:~0,-1!
   for %%# in ("!stripped!") do ( 
     echo %%~n#
     set "dir_name=%%~n#"
    )
   copy /y "%%~fa" "%target_dir%\!dir_name!.jpg"  >nul 2>nul
) 
endlocal 
popd
pause
person npocmaka    schedule 15.02.2015
comment
Я проверил вашу программу, и в конце в целевой папке есть только один файл с пустым именем. - person user3626223; 15.02.2015