|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Переименование файлов в папке по имени папки_счётчик |
|
CMD/BAT - Переименование файлов в папке по имени папки_счётчик
|
Новый участник Сообщения: 4 |
Есть большое количество папок с разными именами. Все эти папки содержаться в одной исходной папке. В каждой папке содержатся по несколько файлов с разными именами.
Прошу помощи - нужен батник который будет переименовывать файлы в этих папках по названию папок_счётчик и записывать все эти переименованные файлы вместе с папками в другое место. В то время как исходное место (откуда эти файлы с папками берутся должно остаться неизменным.) У самого никак не получается это реализовать. Зарание спасибо. |
|
Отправлено: 17:55, 04-03-2013 |
Ветеран Сообщения: 2733
|
Профиль | Отправить PM | Цитировать При такой постановке надёжнее выделять номер из имени исходного файла. Вот вариант решения (похоже, не очень элегантный)
@Echo Off SetLocal EnableExtensions EnableDelayedExpansion FOR /D %%p IN ("D:\Папка номер 1\*.*") DO ( Set From=%%p Set To=!From:D:\Папка номер 1=D:\Упорядоченная папка! Set NewName=%%~nxp If Not Exist "!To!\" md "!To!\" FOR %%f IN ("%%p\*.*") DO ( Call :Number "%%~nf" If Not !Num!==0 Copy "%%f" "!To!\!NewName!_!Num!%%~xf" >Nul ) ) GoTo :Eof :Number Set Num=0 Set N=%~1 Set NN=%N:~-1% Set M=%N:~-2% If "%M:~0,1%"=="_" Set Num=00%NN%& GoTo :Eof Set NN=%N:~-2% Set M=%N:~-3% If "%M:~0,1%"=="_" Set Num=0%NN%& GoTo :Eof Set NN=%N:~-3% Set M=%N:~-4% If "%M:~0,1%"=="_" Set Num=%NN%& GoTo :Eof Замечание насчет замены Copy на Move остаётся в силе |
------- Последний раз редактировалось megaloman, 06-03-2013 в 00:09. Отправлено: 23:59, 05-03-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Sergo_zloy:
@Echo Off SetLocal EnableDelayedExpansion Set folder=e:\Temp\3 3 Set OutFolder=e:\Temp\Out xCopy /T "%folder%\*" "%OutFolder%\" For /F "tokens=*" %%a In ('Dir /B /S /A:D "%folder%"') Do ( For /F "tokens=*" %%i In ('Dir /B /S /A:-D "%%~a" 2^>Nul') Do ( Set name=%%~ni Call :_ExtractN Copy "%%i" "%OutFolder%\%%~nxa\%%~nxa_!name!%%~xi" ) ) Pause Exit :_ExtractN Set name=%name:*_=% If Not "%name%"=="%name:*_=%" GoTo :_ExtractN GoTo :EOF |
|
Отправлено: 11:49, 06-03-2013 | #12 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Возможно для кого-то несложно будет написать скрипт создания папок от 01 до 12?
|
Отправлено: 10:06, 17-01-2014 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:58, 17-01-2014 | #14 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Переименование файлов с заменой символов по маске | Constantant | Скриптовые языки администрирования Windows | 41 | 29-03-2016 03:40 | |
CMD/BAT - [решено] открытие файлов по расширению (не по имени) | 9119 | Скриптовые языки администрирования Windows | 1 | 17-12-2012 10:52 | |
CMD/BAT - Переименование группы файлов по дате создания | Serg2010 | Скриптовые языки администрирования Windows | 8 | 14-04-2012 00:40 | |
Переименование группы файлов по дате создания | Serg2010 | AutoIt | 1 | 10-04-2012 10:25 | |
CMD/BAT - Удаление старых файлов по имени файлов | Bиктор | Скриптовые языки администрирования Windows | 1 | 19-04-2010 03:37 |
|