|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Переименование файлов в папке по имени папки_счётчик |
|
|
CMD/BAT - Переименование файлов в папке по имени папки_счётчик
|
Новый участник Сообщения: 4 |
Есть большое количество папок с разными именами. Все эти папки содержаться в одной исходной папке. В каждой папке содержатся по несколько файлов с разными именами.
Прошу помощи - нужен батник который будет переименовывать файлы в этих папках по названию папок_счётчик и записывать все эти переименованные файлы вместе с папками в другое место. В то время как исходное место (откуда эти файлы с папками берутся должно остаться неизменным.) У самого никак не получается это реализовать. Зарание спасибо. |
|
Отправлено: 17:55, 04-03-2013 |
Ветеран Сообщения: 1758
|
Если правильно понял
@echo off setlocal set "sdir=c:\test" set "ddir=d:\test" pushd "%sdir%" || goto:eof 2>nul md "%ddir%" for /f "tokens=*" %%i in (' dir /b /ad ') do ( pushd "%%i" set "cnt=100" for /f "tokens=*" %%j in (' dir /b /a ') do call:1 "%%j" "%%i" popd xcopy /e "%%i" "%ddir%\%%~i\" ) popd goto:eof :1 set /a cnt+=1 ren %1 "%~2_%cnt:~-2%%~x1" |
Отправлено: 20:18, 04-03-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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!\" Set i=1 FOR /F "usebackq delims=" %%f IN (`Dir "%%p\*.*" /A:-D /B /O:D /T:C 2^>nul`) DO ( Copy "!From!\%%f" "!To!\!NewName!_!i!" >nul Set /A i=!i!+1 ) ) Цитата:
|
|
------- Последний раз редактировалось megaloman, 04-03-2013 в 21:06. Отправлено: 20:52, 04-03-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 2All: я лично понял так, что придётся сначала скопировать, а затем уже переименовывать. Тогда исходные файлы останутся неизменными. Впрочем, подождём автора.
|
Отправлено: 21:23, 04-03-2013 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Большое Спасибо!
Вы даже не представляете как помогли. Скрипт от Foreigner это то что нужно. (только он переименовывает и в исходной папке и в той куда копирует.) И ещё, желательно чтобы в переименованных файлах был после подчёркивания 1 символ (пример papka_1.jpg) и только если файлов больше десяти то начиная с десятого 2 символа (papka_10.jpg) Скрипт от Megaloman тоже работает и переименовывает файлы только в той папке куда копирует, но те ставит разрешения файлов. То есть в исходных папках все файлы, это картинки (.jpg), а переименованные теряют это разрешение, И ещё переименованные файлы не в том порядке получаются, как были в исходной папке. Но это я сам виноват. Как написал в первом посте так и сделали. (никаких уточняющих факторов не написал) Уточняю: В исходных папках файлы могут называться так: document_1.jpg, document_2.jpg и так далее, нумерация по времени создания. (первым создан файл document_1.jpg потом document_2.jpg. и т.д) Переименованные файлы должны быть в той же нумерации. |
|
Последний раз редактировалось Sergo_zloy, 05-03-2013 в 00:14. Отправлено: 00:07, 05-03-2013 | #5 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Sergo_zloy:
Цитата Sergo_zloy:
Команда Dir, при сортировке по имени, выдает их в таком порядке: Тут уже простой сортировкой по имени не обойдешься. |
||
Отправлено: 08:52, 05-03-2013 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата gora:
А можно сделать так чтобы исходное имя файла менялась на название папки, но в конце имени оставалось это пtрвоначально созданное число. (было document_x.jpg, document_y.jpg ..... document_nn.jpg, а стало papka_x.jpg, papka_y.jpg .... papka_nn.jpg) |
|
Отправлено: 10:33, 05-03-2013 | #7 |
Ушёл из жизни Сообщения: 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 Copy "%%i" "%OutFolder%\%%~nxa\!name:document=%%~nxa!%%~xi" ) ) Pause |
|
Последний раз редактировалось gora, 05-03-2013 в 11:07. Отправлено: 10:51, 05-03-2013 | #8 |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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!\" Set i=1001 FOR /F "usebackq delims=" %%f IN (`Dir "%%p\*.*" /A:-D /B /O:D /T:C 2^>nul`) DO ( Set ii=!i! Set ii=!ii:~-3! Copy "!From!\%%f" "!To!\!NewName!_!ii!%%~xf" >nul Set /A i=!i!+1 ) ) Цитата:
|
||
------- Отправлено: 10:53, 05-03-2013 | #9 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата megaloman:
megaloman Спасибо вам огромное! Вы даже не представляете как помогли. Ещё одна просьба. Подскажите какую литературу почитать, чтобы хоть чуть чуть начать разбираться в написании скриптов (bat файлов). P.S. Благодарю всех за помощь! Сам бы я год до этого доходил. |
||
Последний раз редактировалось Sergo_zloy, 05-03-2013 в 15:41. Отправлено: 11:50, 05-03-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|