Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Копирование файлов из подкаталогов и их переименование в название папки

Ответить
Настройки темы
CMD/BAT - Копирование файлов из подкаталогов и их переименование в название папки

Новый участник


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

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


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

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

Отправлено: 11:25, 11-11-2014

 

Ветеран


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

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


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

Отправлено: 11:56, 11-11-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


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

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


Iska, Копируем все и добавляем счетчик

Отправлено: 13:10, 11-11-2014 | #3


Ветеран


Contributor


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

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


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

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


Отправлено: 15:18, 11-11-2014 | #4


Новый участник


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

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


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

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

Отправлено: 15:26, 11-11-2014 | #5


Новый участник


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

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


Есть ли у кого какие мысли?

Отправлено: 15:52, 12-11-2014 | #6


Ветеран


Contributor


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

Профиль | Отправить 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


Новый участник


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

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


megaloman, Как же Вы мне помогли! Спасибо огромное!

Отправлено: 09:44, 13-11-2014 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Копирование файлов из подкаталогов и их переименование в название папки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Копирование отдельных файлов из папки в PS Евгений_Никулин@vk Скриптовые языки администрирования Windows 2 10-02-2014 17:07
CMD/BAT - Копирование нескольких файлов из папки в другую с прошедшей датой salmans Скриптовые языки администрирования Windows 5 06-08-2013 03:01
VBS/WSH/JS - Копирование файлов из каталогов и подкаталогов с сохранением структуры подкаталогов spke Скриптовые языки администрирования Windows 0 10-04-2013 23:58
CMD/BAT - копирование файлов из подкаталогов bojfriend Скриптовые языки администрирования Windows 8 31-08-2011 01:49
Любой язык - [решено] Вывод списка файлов и их размеров в байтах из заданной папки Vadikan Скриптовые языки администрирования Windows 6 18-03-2011 23:16




 
Переход