PDA

Показать полную графическую версию : переименование файлов


Alexander_88
28-05-2015, 05:04
здравствуйте, подскажите пожалуйста, почему не работает данный код по переименованию 20 файлов?

@echo off
chcp 1251>nul

set number=20
set "folder=F:\02 indian"

set "reg_exp=^[0-9][0-9][0-9][0-9]ind\...*"
for /f "delims=" %%i in ('
dir /a-d/b/o-n "%folder%\*ind.*"^| findstr /ir "%reg_exp%"
') do (
set max=%%i
goto:#
)

:#
set count=1%max:~,4%
for /f "delims=" %%i in ('
dir /a-d/b "%folder%"^| findstr /irv "%reg_exp%"
') do (
set /a count_2+=1
for /f %%j in ('
set /a count_2
') do (
if %%j leq %number% (
set /a count+=1
call ren "%folder%\%%i" "%%count:~1%%ind%%~xi%
) else (
pause
exit /b
)
)
)

exit /b

с другой папкой и с другим исключением для названия файла работает :dont-know

Foreigner
28-05-2015, 13:38
Alexander_88, было бы неплохо побольше конкретики.

Alexander_88
28-05-2015, 15:25
вот в этой теме, мне помогли с кодом переименования файлов
http://forum.oszone.net/thread-286926.html

он работает на всех папках с файлами, но с одной почему - то не работает (которую я примел выше, я в ней выделил также то, что относится именно к этой папке)

greg zakharov
28-05-2015, 17:34
Alexander_88, чем путанней и невнятней объяснение, тем более вероятность затянутости решения проблемы. Где логи или хотя бы скриншоты? И к слову, странная регулярка для findstr.

Alexander_88
28-05-2015, 19:27
вот, что в окне появляется:

Foreigner
28-05-2015, 19:42
Alexander_88, Уберите chcp и покажите ошибку

greg zakharov, Одна точка лишняя, но не должна влиять на результат

Alexander_88
28-05-2015, 23:23
убрал кодировку.
не понятно какой файл существует, ведь он должен переименовывать.. продолжать нумерацию

greg zakharov
28-05-2015, 23:25
Foreigner, дело не в точке, а в коде вообще. Если бы нечто подобным образом писалось в конторе которой работаю, за это бы точно побили, изнасиловали и убили, причем необязательно в этом порядке. А если серьезно, людям свойственно все усложнять.

Georgio
29-05-2015, 09:47
Alexander_88, заменил в коде все "%%i" и "%%j" и их модификации на "%%?" и "%%*" и их модификации соответственно:


@echo off
chcp 1251>nul

set number=20
set "folder=F:\02 indian"

set "reg_exp=^[0-9][0-9][0-9][0-9]ind\...*"
for /f "delims=" %%? in ('
dir /a-d/b/o-n "%folder%\*ind.*"^| findstr /ir "%reg_exp%"
') do (
set max=%%?
goto:#
)

:#
set count=1%max:~,4%
for /f "delims=" %%? in ('
dir /a-d/b "%folder%"^| findstr /irv "%reg_exp%"
') do (
set /a count_2+=1
for /f %%* in ('
set /a count_2
') do (
if %%* leq %number% (
set /a count+=1
call ren "%folder%\%%?" "%%count:~1%%ind%%~x?"
) else (
exit /b
)
)
)
exit /b


.



Господа, догадайтесь, зачем я это сделал. Случай очень интересен для теоретиков.

Alexander_88
29-05-2015, 12:45
Georgio, спасибо, теперь работает с этой проблемной папкой :)

еще к стате было такое (на старом коде), что не переименовывался 1 файл из папки... это бывало редко.. к примеру в папке файлы 0001amb - 0010amb,
кодом переименовываются другие файлы в папке, не 20 штук как указано, а 19, и 1 какой - то пропускается (0012amb - 0030amb), а 0011amb почему то не ту. такое редко, но бывало, потом с новым кодом попробую, может такого не будет

Alexander_88
25-07-2017, 21:30
Добрый день. Подскажите, решил немножко поднять тему. можно ли как - то переделать код в десятом посту, чтобы он переименовал файлы не 0001amb 0002amb 0003amb, а start0001 start0002 start0003?
т.е, переименовывал файлы с именем, у которых сначала идут буквы а потом их номер (состоящий из 4 цифр как обычно)




© OSzone.net 2001-2012