|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование файлов с указанием порядкового номера |
|
CMD/BAT - [решено] Переименование файлов с указанием порядкового номера
|
Ветеран Сообщения: 1014 |
Профиль | Отправить PM | Цитировать
Есть количество файлов которые нужно переименовать.
Прошу помощи - нужен универсальный (по возможности) батник который будет переименовывать файлы. Важно не то, какое будет текстовое название ( по умолчанию используется исходное название и , как второй вариант - оно должно задаваться пользователем), а то, чтобы в начале названия присутствовал порядковый номер. Например: textA_textB_text001.xxx textA_textB_text002.xxx ....................................... на 001_textA_textB.xxx 002_textA_textB.xxx ................................ чтобы при переименовании файла сохранялся свой оригинальный порядковый номер. Например так: Спасибо! |
|
Отправлено: 13:13, 30-04-2011 |
Ветеран Сообщения: 1014
|
Профиль | Отправить PM | Цитировать Iska, всё получилось !
На харде , фаловая система FAT32 - такой батник: @echo off setlocal for /f "tokens=*" %%i in ('dir /b /o:n "*.avi"') do call:ren "%%i" goto:eof :ren set /a cnt+=1 set "pref=00%cnt%" set "name=%~n1" ren "%~1" "%pref:~-2%_%name:~16%%~x1" @echo off setlocal for %%i in (*.avi) do call:ren "%%i" goto:eof :ren set /a cnt+=1 set "pref=00%cnt%" set "name=%~n1" ren "%~1" "%pref:~-2%_%name:~16%%~x1" ***************************************************** Если не затруднит - ещё вопросы, пожалуйста: 1. Есть ли принципиальное различие между "exit" и "goto:eof" ? 2. В каких случаях , что лучше указывать ? 3. Достаточно ли только после "FOR" указать окончание ? 4. как грамотнее всего использовать эти команды ? Спасибо! |
Отправлено: 16:32, 09-05-2011 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата shao:
Цитата shao:
Урок bat-аники Особенности реализации командного процессора cmd.exe операционных систем WinNT. Цитата shao:
|
|||
Отправлено: 18:31, 09-05-2011 | #32 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 07:46, 10-05-2011 | #33 |
Ветеран Сообщения: 1014
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата amel27:
|
||
Отправлено: 11:54, 11-05-2011 | #34 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата shao:
- если результат процедуры зависит всего от одной команды (типа REN), то достаточно GoTo:EOF, но только сразу после неё, иначе другая команда перезапишет код ошибки; - если результат процедуры зависит от нескольких команд, других условий либо Вы хотите ввести свою нумерацию исключительных ситуаций, то Exit/B. |
|
Отправлено: 12:03, 11-05-2011 | #35 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Пришло время навести порядок в картинках. Суть в том, что есть многоуровневая структура вложенных папок. В последней папке лежат файлы *.jpg, *.bmp, *.gif Необходимо переименовать файлы по имени папки, в которой они лежат с порядковым номером и соответствующим разрешением.
К примеру, файлы лежат в папке Priroda. На выходе файлы должны переименоваться |
Отправлено: 12:02, 28-09-2011 | #36 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Цитата sov44:
@echo off :: Папка, в которой нужно искать set "sDir=z:\myfolder" :: Параметрами проставить нужные расширения for /r "%sDir%" %%a in (.) do call:RenPicture "%%~dpna" bmp jpg gif goto:eof :RenPicture if not "%2"=="" ( for /f "tokens=1* delims=:" %%i in ( 'dir "%~1\*.%2" /a-d/b 2^>nul ^| findstr /i/n "\.%2$" 2^>nul' ) do ren "%~1\%%j" "%~n1-%%i.%2" 2>nul shift /2 goto RenPicture ) |
|
Последний раз редактировалось SendMessage, 28-09-2011 в 15:51. Причина: оптимизация скрипта Отправлено: 15:16, 28-09-2011 | #37 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать SendMessage, Спасибо, то, что надо! Если не сложно, поясните его пожалуйста.
Моей фантазии пока хватило на это: @Echo Off SetLocal EnableExtensions call :1 "*.jpg" call :1 "*.bmp" call :1 "*.gif" exit :1 set hh=c:\WL set cnt=0 For /F "Delims=" %%I In ('Dir %hh%\%1 /B /S 2^>nul') Do ( set kk=%%I call :ren %kk% ) exit /b :ren set /a cnt+=1 for /f "tokens=1,2,3,4,5 delims=\" %%a in ("%kk%") do ( set ddd=%%d set ooo=%%e ) ren %ooo% "%ddd%-%Cnt%%~x1" |
Последний раз редактировалось sov44, 28-09-2011 в 17:13. Отправлено: 16:53, 28-09-2011 | #38 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Цитата sov44:
Ну эту строчка и так понятна - рекурсивный обход папок, если стоит в множестве точка - перечисляются только папки. В инструкцию RenPicture передаются маршрут обрабатываемой в текущий момент папки и все нужные расширения. if not "%2"=="" - то есть если параметр не пустой выполняются нужные действия. for /f "tokens=1* delims=:" %%i in ('dir "%~1\*.%2" /a-d/b 2^>nul ^| findstr /i/n "\.%2$" 2^>nul') - выводятся все файлы с нужным расширением, а команда findstr их пронумеровывает (ключ /n) - на выводе они выглядят примерно так: Ну и, соответственно, на выходе отпарсенная строка в переменную %%i получает номер, а в переменную %%j - имя файла. ren "%~1\%%j" "%~n1-%%i.%2" 2>nul - здесь пояснения тоже не очень нужны. %~1 - маршрут папки, %~n1 - имя папки. shift /2 - сдвиг параметров. То есть - тот, что до этой команды находился в переменной %3, сдвигается в переменную %2, а из %4 в %3. Поскольку у shift стоит ключ /2 - это означает, что сдвиг будет происходить со 2-го параметра, а 1-й останется неизменным. Таким образом для текущей папки перебираются все нужные расширения. После того, как все они обработаются, управление опять переходит к первому for и начинает обрабатываться следующая папка. |
|
Отправлено: 17:54, 28-09-2011 | #39 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Смена порядкового номера монитора | M1ndW0rk | Microsoft Windows 2000/XP | 19 | 04-12-2020 23:39 | |
CMD/BAT - [решено] Список файлов из поддиректорий с указанием полного пути | Sat_Kelman | Скриптовые языки администрирования Windows | 4 | 20-03-2020 17:17 | |
CMD/BAT - Переименование файлов. | gen0m.rsw | Скриптовые языки администрирования Windows | 1 | 15-10-2010 19:15 | |
Как сделать наглядный листинг папок и файлов с указанием всех прав доступа | chickaboo | Microsoft Windows NT/2000/2003 | 10 | 15-02-2008 16:54 | |
переименование файлов | mask | Программирование и базы данных | 6 | 20-05-2003 00:53 |
|