Пакетный обход вложенных папок и переименование файлов - PullRequest
3 голосов
/ 30 апреля 2011

Я бы хотел просмотреть папку и все ее подпапки, сохранить переменную counter текущего файла и переименовать ее в $ counter $ ExistingFileName.
Например.

$count = 1;  
foreach $file in $folder  
{  
  $file.name = $count + $file.name;  
  $count++;  
}

Человек, который может ответить на это, будет моим героем! :)
Кстати, я использую Windows 7.

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

Хорошо, пока вы размышляете над моими вопросами в моем комментарии к вашему посту (или, возможно, все еще возвращаетесь на этот сайт, чтобы прочитать их), вот мой пробный снимок:

@ECHO OFF
SET "rootdir=%~1"
IF "%rootdir%"=="" SET rootdir=.
SET cnt=0
FOR /R "%rootdir%" %%f IN (*) DO (
  SET /A cnt+=1
  SETLOCAL EnableDelayedExpansion
  RENAME "%%f" "!cnt!%%~nxf"
  ENDLOCAL
)

Это переименует ваши файлы, просто добавив их имена с номерами, например:

1file.txt
2program.exe
...

Если хотите, вы можете сделать это следующим образом:

00001file.txt
00002program.exe

Для этого вам нужно будет внести два изменения в скрипт выше (выделено жирным шрифтом):

@ECHO OFF
SET "rootdir=%~1"
IF "%rootdir%"=="" SET rootdir=.
SET <b>cnt=10000</b>
FOR /R "%rootdir%" %%f IN (*) DO (
  SET /A cnt+=1
  SETLOCAL EnableDelayedExpansion
  RENAME "%%f" "<b>!cnt:~1!</b>%%~nxf"
  ENDLOCAL
)
1 голос
/ 30 апреля 2011
SETLOCAL ENABLEDELAYEDEXPANSION 
set count=1
for /r .\folder %%f IN (*.*) do (
    ren "%%f" "!count!%%~nf%%~xf"
    set /a count=!count!+1)
...