Компьютерный форум 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=317862)

Viktor99 15-08-2016 21:56 2660214

Пакетное переименование файлов по маске
 
Можно ли автоматоматически переименовать файлы в папках, по такой маске: "Имя папки + порядковый номер"? В корне диска находится много папок, около 150 штук. В каждой папке несколько файлов, с именами 1.2.3...n. Например, есть папка "Пастушка и рыцарь", в ней файлы 01,02,03,04,05. Нужно чтобы после переменования файлы были: Пастушка и рыцарь_01, Пастушка и рыцарь_02... и так для каждой папки, но чтобы это одним разом сделать можно было. Заранее благодарен за любую помощь.

alpap 15-08-2016 23:25 2660233

Цитата:

Цитата Viktor99
_01 »

согласно этому пожеланию, если файлов в папке не более 99
Код:

@echo off
set "d=C:\osn_papka"
for /f "delims=" %%a in ('dir/ad/b "%d%"') do (
 setlocal enabledelayedexpansion
  pushd "%d%\%%a"
  for /f "delims=" %%b in ('dir/a-d/b') do set/a n+=1& set m=0!n!& echo %d%\%%a_!m:~-2!%%~xb
  popd
 endlocal
)
exit

если не более 999
Код:

@echo off
set "d=C:\osn_papka"
for /f "delims=" %%a in ('dir/ad/b "%d%"') do (
 setlocal enabledelayedexpansion
  pushd "%d%\%%a"
  for /f "delims=" %%b in ('dir/a-d/b') do set/a n+=1& set m=00!n!& echo %d%\%%a_!m:~-3!%%~xb
  popd
 endlocal
)
exit

далее понятно

если 0 в начале не требуется (_1, _2, ... , _99), чуток проще:
Код:

@echo off
set "d=C:\osn_papka"
for /f "delims=" %%a in ('dir/ad/b "%d%"') do (
 setlocal enabledelayedexpansion
  pushd "%d%\%%a"
  for /f "delims=" %%b in ('dir/a-d/b') do set/a n+=1& echo %d%\%%a_!n!%%~xb
  popd
 endlocal
)
exit



Время: 11:02.

Время: 11:02.
© OSzone.net 2001-