Войти

Показать полную графическую версию : [решено] Ошибка в переименовании группы файлов.


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

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"

gora
24-04-2015, 08:29
shao
- не "кладите" переименованные файлы в исходную папку
- или ужесточите маску поиска, дабы уже переименованные файлы не попадали вторично:for %%i in (*TV.avi) do call:ren "%%i"

Iska
24-04-2015, 12:11
- или ужесточите маску поиска, дабы уже переименованные файлы не попадали вторично »
Я потому обычно сначала делаю «dir …», а результат вывода разбираю в «for /f»:
for /f … %%i in (`dir …`) do …

Georgio
24-04-2015, 12:14
@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

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

gora
24-04-2015, 13:58
как указать конечную папку для сохранения »
Используйте Copy вместо Ren

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

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

Georgio
24-04-2015, 14:17
shao, да я об этом уже писал. Вот ссылка: "http://forum.script-coding.com/viewtopic.php?pid=88702#p88702".




© OSzone.net 2001-2012