Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   переименование файлов (http://forum.oszone.net/showthread.php?t=300388)

Alexander_88 28-05-2015 05:04 2512151

переименование файлов
 
здравствуйте, подскажите пожалуйста, почему не работает данный код по переименованию 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 2512305

Alexander_88, было бы неплохо побольше конкретики.

Alexander_88 28-05-2015 15:25 2512343

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

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

greg zakharov 28-05-2015 17:34 2512402

Alexander_88, чем путанней и невнятней объяснение, тем более вероятность затянутости решения проблемы. Где логи или хотя бы скриншоты? И к слову, странная регулярка для findstr.

Alexander_88 28-05-2015 19:27 2512479

вот, что в окне появляется:

Foreigner 28-05-2015 19:42 2512486

Alexander_88, Уберите chcp и покажите ошибку

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

Alexander_88 28-05-2015 23:23 2512563

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

greg zakharov 28-05-2015 23:25 2512564

Foreigner, дело не в точке, а в коде вообще. Если бы нечто подобным образом писалось в конторе которой работаю, за это бы точно побили, изнасиловали и убили, причем необязательно в этом порядке. А если серьезно, людям свойственно все усложнять.

Georgio 29-05-2015 09:47 2512648

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 2512734

Georgio, спасибо, теперь работает с этой проблемной папкой :)

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

Alexander_88 25-07-2017 21:30 2754025

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


Время: 21:32.

Время: 21:32.
© OSzone.net 2001-