Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Ошибка в переименовании группы файлов.

Аватара для shao

Ветеран


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

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


Здравствуйте коллеги!
Прошу помощи в такой ситуации, поскольку знаний мало и сам разобраться не смог...
В конкретном случае нужно в названии файлов поменять местами название и нумерацию.
Например с такого:

Код: Выделить весь код
aaaaaaaaaaaa.S01E01.rus.LostFilm.TV.avi
aaaaaaaaaaaa.S01E02.rus.LostFilm.TV.avi
сделать так:

Код: Выделить весь код
S01E01_aaaaaaaaaaaa.avi
S01E02_aaaaaaaaaaaa.avi
Но в результате получается так :

Код: Выделить весь код
aaaaaa_S01E01_aaaaa.avi
S01E02_aaaaaaaaaaaa.avi
S01E03_aaaaaaaaaaaa.avi
Насколько я понял скрипт обработав группу файлов, перед выходом, последним опять переименовывает первый файл. Почему ?

Код: Выделить весь код
@ECHO OFF

setlocal

for %%i in (*.avi) do call:ren "%%i"

goto:eof


:ren
set "old=%~n1"
set "pref=%old:~13,6%"
set "pref2=%old:~0,12%"

ren "%~1" "%pref%_%pref2%%~x1"

Отправлено: 03:15, 24-04-2015

 

Аватара для gora

Ушёл из жизни


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

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


shao
- не "кладите" переименованные файлы в исходную папку
- или ужесточите маску поиска, дабы уже переименованные файлы не попадали вторично:
Код: Выделить весь код
for %%i in (*TV.avi) do call:ren "%%i"
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:29, 24-04-2015 | #2



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

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


Ветеран


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

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


Цитата gora:
- или ужесточите маску поиска, дабы уже переименованные файлы не попадали вторично »
Я потому обычно сначала делаю «dir …», а результат вывода разбираю в «for /f»:
Код: Выделить весь код
for /f … %%i in (`dir …`) do …
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:11, 24-04-2015 | #3


Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal

for /f "delims=" %%i in ('2^>nul dir/a-d/b "*.avi"') do call:ren "%%i"

endlocal
goto:eof


:ren

 set "old=%~n1"
 set "pref=%old:~13,6%"
 set "pref2=%old:~0,12%"

 ren "%~1" "%pref%_%pref2%%~x1"

 goto:eof
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:14, 24-04-2015 | #4


Аватара для shao

Ветеран


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

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


Цитата gora:
- не "кладите" переименованные файлы в исходную папку »
Да , спасибо! Со вторым вариантом всё ОК!
Только не знаю, как с первым вариантом - как указать конечную папку для сохранения....
Или на директорию выше.

Последний раз редактировалось shao, 24-04-2015 в 14:03.


Отправлено: 13:55, 24-04-2015 | #5


Аватара для gora

Ушёл из жизни


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

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


Цитата shao:
как указать конечную папку для сохранения »
Используйте Copy вместо Ren

Отправлено: 13:58, 24-04-2015 | #6


Аватара для shao

Ветеран


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

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


Georgio, Спасибо, и ваш вариант работает!
Могли бы поподробнее объяснить этот момент :
Код: Выделить весь код
for /f "delims=" %%i in ('2^>nul dir/a-d/b "*.avi"')

Отправлено: 14:08, 24-04-2015 | #7


Ветеран


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

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


Цитата shao:
Могли бы поподробнее объяснить этот момент : »
Получаем список («dir») файлов («/a:-d») в линейном формате («/b») по маске «"*.avi"», перенаправляя поток ошибок команды на пустое устройство («2>nul», дополнительно экранируя символ перенаправления «>» символом «^») на случай отсутствия файлов по указанной маске. Полученный вывод команды — перечень файлов — разбираем построчно по «for /f».
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:15, 24-04-2015 | #8


Ветеран


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

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


shao, да я об этом уже писал. Вот ссылка: "http://forum.script-coding.com/viewt...d=88702#p88702".
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:17, 24-04-2015 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Ошибка "Элемент не найден" при переименовании/перемещении папки Vancouver Microsoft Windows 7 114 22-11-2023 11:57
CMD/BAT - [решено] BAT Создание PDF файлов из группы файлов (JPG) raquelle Скриптовые языки администрирования Windows 22 13-08-2017 12:39
Разное - Ошибка при переименовании папки, файла vit063 Microsoft Windows Vista 6 22-07-2010 10:33
Разное - Ошибка 0x80004005 при создании или переименовании папок sektor1876 Microsoft Windows 7 19 01-06-2010 16:01
Разное - При переименовании файлов они меняют своё имя только после нажатия F5. roniro Microsoft Windows 2000/XP 1 11-02-2010 16:04




 
Переход