Войти

Показать полную графическую версию : Копирование файлов из подкаталогов и их переименование в название папки


lexxxyatina
11-11-2014, 11:25
Всем привет! Понимаю, что тема избитая, и подобное на форуме обсуждалось. Что-то находил, использовал, но до конца разобраться не могу (это мои первые шаги в написании подобного). Прошу помощи, сроки жмут..

Суть задания:
имеется каталог с кучей подкаталогов в которых лежат pdf файлы. Необходимо скопировать pdf-ки на уровень выше и переименовать их также как называлась папка в которой они лежали.
Например есть папка d:\папка 1\папка 2\папка 3\1.pdf
Результат: d:\папка 1\папка 2\папка 3.pdf

Iska
11-11-2014, 11:56
lexxxyatina, в папке «d:\папка 1\папка 2\папка 3» оказывается несколько pdf-файлов. Что делать?

lexxxyatina
11-11-2014, 13:10
Iska, Копируем все и добавляем счетчик

megaloman
11-11-2014, 15:18
Возможна ли ситуация
d:\папка 1\1.pdf
d:\папка 1\папка 2\2.pdf
d:\папка 1\папка 2\папка 3\3.pdf
То есть, .pdf содержится только в самой нижней папке пути, или в промежуточных тоже?

lexxxyatina
11-11-2014, 15:26
megaloman, Добрый день! Нет, pdf файлы могут находиться только в самой нижней папке.

ps Случай, что в одной папке несколько пдф фалов редкий, поэтому желательно счетчик добавлять только для таких случаев) Если в папке один файл, то переименовывать в название папки без счетчика..
Надеюсь не запутал окончательно)

lexxxyatina
12-11-2014, 15:52
Есть ли у кого какие мысли? :help:

megaloman
12-11-2014, 20:23
@Echo Off

SetLocal EnableExtensions EnableDelayedExpansion

Set "Where=E:\Папка1"
Set "Maska=*.pdf"

For /F "usebackq delims=" %%A In (`Dir "%Where%\%Maska%" /B /s /A:-D 2^>nul`) Do Call :SubDir1 "%%A" "%%~dpA"

GoTo :Eof

:SubDir1
Set S=%~2
Set "S=%S:~0,-1%"
Call :SubDir2 %1 "%S%" "%~n1" "%~x1"
GoTo :Eof

:SubDir2
Set /A i=0
Set "j="
:Continue
Set "NewName=%~dp2%~n2!j!%~4"
If Not Exist "!NewName!" (
Move %1 "!NewName!"
GoTo :Eof
)
Set /A i=!i!+1
Set "j= !i!"
GoTo :Continue
GoTo :Eof

Батник можно запускать на указанную директорию 1 раз, так как он сделан для случая, как Вы писали: " pdf файлы могут находиться только в самой нижней папке".
Батник при повторном запуске поднимает все пдф-файлы на уровень вверх, присваивая им соответственно другое имя.

lexxxyatina
13-11-2014, 09:44
megaloman, Как же Вы мне помогли! Спасибо огромное! :clapping:




© OSzone.net 2001-2012