![]() |
Переименование файлов с указанием порядкового номера
Есть количество файлов которые нужно переименовать.
Прошу помощи - нужен универсальный (по возможности) батник который будет переименовывать файлы. Важно не то, какое будет текстовое название ( по умолчанию используется исходное название и , как второй вариант - оно должно задаваться пользователем), а то, чтобы в начале названия присутствовал порядковый номер. Например: Код:
textA_textB_text001.xxx чтобы при переименовании файла сохранялся свой оригинальный порядковый номер. Например так: Код:
textA_textB_text051.xxx |
shao,
Например переименовываем 100 файлов *.txt. Без привязки к исходному названию: Код:
@echo off |
Foreigner, Отлично! Спасибо - работает.
Пожалуйста, ещё бы вариант привязки к исходному названию. Чтобы не вносить название каждый раз вручную. Вот так: Код:
textA_textB_text001.xxx |
shao,
Цитата:
Цитата:
Код:
@echo off |
Foreigner, спасибо большое за второй скрипт и обЪяснение.
И если не затруднит - обЪясните ещё пожалуйста этот момент: Код:
....... |
shao,
Код:
:: Увеличиваем с каждым вызовом порядковое число ( перем. %cnt% ) на 1 |
Foreigner, Спасибо Вам за помощь!
Всё понятно , кроме одного. Что такое "cnt" ? |
Цитата:
|
Цитата:
|
Цитата:
|
amel27, спасибо. Я не путаю. Про парсер знаю. Должно быть, Вас смутило упоминание «как отложенное раскрытие».
|
Iska, а замечание и не для Вас, а для тех кто будет читать пост после справки ;)
|
amel27, спасибо, ясно.
|
Столкнулся с новой задачей.
Теперь нужно переименовать файлы , отсекая стандартный текст с номерами в начале названия (сохранив оригинальное последующее название в каждом) и , всё также вначале присваивая порядковые номера файлов. Пример: Код:
aaaaa 01f01 - bbbb bbbb.txt Код:
@echo off как отсечь стандартный текст с номерами в начале названия в переменной %name% ? |
Цитата:
Код:
ren "%1" "%pref:~-2%_%name:~14%%~x1" |
Цитата:
....... Почему - то "ошибка в синтаксисе команды...." Код:
@echo off |
shao, после строки с FOR (перед REN) нужно поставить выход из скрипта - EXIT, чтобы предотвратить холостой вход в процедуру REN
а по поводу ошибок - включайте "@echo on" и смотрите, на какой строке валится |
amel27,
Цитата:
Код:
@echo off и без кавычек : Код:
ren %1 Код:
ren "%1" ........ Почему ? |
Код:
for %%i in (*.txt) do call:ren "%%i" |
Iska, спасибо!
Работает так : Код:
ren %1 … Код:
ren "%~1" … |
Цитата:
|
Цитата:
|
Тогда уж, пожалуйста, доверьтесь моему опыту и в таком суждении: «Доверяй, но проверяй» ;).
|
Цитата:
Второй вариант предпочтительней и рекомендуется к применению. Параметр, переданный в процедуру или скрипт и содержащий символ пробела, обязан быть заключен в двойные кавычки, чтобы CMD не интерпретировал этот параметр как отдельные сегменты. Например: Код:
batchfile.bat C:\Program Files (x86) - CMD интерпретирует это как передачу в скрипт 3 параметров Код:
batchfile.bat "C:\Program Files (x86)" |
El Sanchez, спасибо за объяснения! Порой, таких детальных обЪяснений не хватает здесь !
Но получается какая-то фигня у меня , ребята.... Этот код работает на текстовых файлах. Переименовывает отлично. Код:
@echo off Если указываю в конце кода "EXIT"или "EXIT /B" переименовывает все вот так : Код:
01_.avi Но не по порядку следования файлов. А в разброс... |
shao, приведите исходные имена файлов, из которых получаются:
Код:
01_.avi |
Цитата:
Блин, на компьютере на харде не додумался это сделать... Интересно, а разве это может как-то влиять на работу батника ?!!! Имена файлов: Код:
Smurfs s01e01 - The Smurf's Apprentice.avi |
Цитата:
Код:
dir /b /o:n "*.xxx" Код:
for /f "tokens=*" %%i in ('dir /b /o:n "*.xxx"') do call… |
Спасибо Iska !
Я сейчас не смогу проверить. Завтра.... И ещё : команда " /o:n " , нсколько понимаю сортирует по имени. А что делает команда " /b " ? Из справки, по ней ничего не понял.... |
Условно говоря, отсекает вводную, суммарную и детальную информацию:
оставляя только имена файлов: Причём, при использовании параметра «/s» («включая подкаталоги») имена файлов будут полными: |
Iska, всё получилось !
На харде , фаловая система FAT32 - такой батник: Код:
@echo off Код:
@echo off ***************************************************** Если не затруднит - ещё вопросы, пожалуйста: 1. Есть ли принципиальное различие между "exit" и "goto:eof" ? 2. В каких случаях , что лучше указывать ? 3. Достаточно ли только после "FOR" указать окончание ? 4. как грамотнее всего использовать эти команды ? Спасибо! |
Цитата:
Цитата:
Урок bat-аники Особенности реализации командного процессора cmd.exe операционных систем WinNT. Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
- если результат процедуры зависит всего от одной команды (типа REN), то достаточно GoTo:EOF, но только сразу после неё, иначе другая команда перезапишет код ошибки; - если результат процедуры зависит от нескольких команд, других условий либо Вы хотите ввести свою нумерацию исключительных ситуаций, то Exit/B. |
Пришло время навести порядок в картинках. Суть в том, что есть многоуровневая структура вложенных папок. В последней папке лежат файлы *.jpg, *.bmp, *.gif Необходимо переименовать файлы по имени папки, в которой они лежат с порядковым номером и соответствующим разрешением.
К примеру, файлы лежат в папке Priroda. На выходе файлы должны переименоваться Код:
Priroda-1.jpg |
Цитата:
Код:
@echo off |
SendMessage, Спасибо, то, что надо! Если не сложно, поясните его пожалуйста.
Моей фантазии пока хватило на это: Код:
@Echo Off |
Цитата:
Код:
for /r "%sDir%" %%a in (.) do call:RenPicture "%%~dpna" bmp jpg gif 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) - на выводе они выглядят примерно так: Код:
1:fileOne.bmp ren "%~1\%%j" "%~n1-%%i.%2" 2>nul - здесь пояснения тоже не очень нужны. %~1 - маршрут папки, %~n1 - имя папки. shift /2 - сдвиг параметров. То есть - тот, что до этой команды находился в переменной %3, сдвигается в переменную %2, а из %4 в %3. Поскольку у shift стоит ключ /2 - это означает, что сдвиг будет происходить со 2-го параметра, а 1-й останется неизменным. Таким образом для текущей папки перебираются все нужные расширения. После того, как все они обработаются, управление опять переходит к первому for и начинает обрабатываться следующая папка. |
Время: 21:15. |
Время: 21:15.
© OSzone.net 2001-