Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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 файлы могут находиться только в самой нижней папке".
Батник при повторном запуске поднимает все пдф-файлы на уровень вверх, присваивая им соответственно другое имя.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:23, 12-11-2014 | #7