Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата sov44:
Если не сложно, поясните его пожалуйста. »
Попробую:
Код: Выделить весь код
for /r "%sDir%" %%a in (.) do call:RenPicture "%%~dpna" bmp jpg gif
Ну эту строчка и так понятна - рекурсивный обход папок, если стоит в множестве точка - перечисляются только папки. В инструкцию RenPicture передаются маршрут обрабатываемой в текущий момент папки и все нужные расширения.
if not "%2"=="" - то есть если параметр не пустой выполняются нужные действия.
for /f "tokens=1* delims=:" %%i in ('dir "%~1\*.%2" /a-d/b 2^>nul ^| findstr /i/n "\.%2$" 2^>nul') - выводятся все файлы с нужным расширением, а команда findstr их пронумеровывает (ключ /n) - на выводе они выглядят примерно так:
Код: Выделить весь код
1:fileOne.bmp
2:fileTwo.bmp
3:OtherFile.bmp
Ну и, соответственно, на выходе отпарсенная строка в переменную %%i получает номер, а в переменную %%j - имя файла.
ren "%~1\%%j" "%~n1-%%i.%2" 2>nul - здесь пояснения тоже не очень нужны. %~1 - маршрут папки, %~n1 - имя папки.
shift /2 - сдвиг параметров. То есть - тот, что до этой команды находился в переменной %3, сдвигается в переменную %2, а из %4 в %3. Поскольку у shift стоит ключ /2 - это означает, что сдвиг будет происходить со 2-го параметра, а 1-й останется неизменным. Таким образом для текущей папки перебираются все нужные расширения. После того, как все они обработаются, управление опять переходит к первому for и начинает обрабатываться следующая папка.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:54, 28-09-2011 | #39