Показать полную графическую версию : Копирование файлов из подкаталогов и их переименование в название папки
lexxxyatina
11-11-2014, 11:25
Всем привет! Понимаю, что тема избитая, и подобное на форуме обсуждалось. Что-то находил, использовал, но до конца разобраться не могу (это мои первые шаги в написании подобного). Прошу помощи, сроки жмут..
Суть задания:
имеется каталог с кучей подкаталогов в которых лежат pdf файлы. Необходимо скопировать pdf-ки на уровень выше и переименовать их также как называлась папка в которой они лежали.
Например есть папка d:\папка 1\папка 2\папка 3\1.pdf
Результат: d:\папка 1\папка 2\папка 3.pdf
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.