PDA

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


llxmanll
15-12-2013, 15:30
Здравствуйте. Эта тему уже находилась поиском. Но ответа на свою проблему не нашёл. Нужно переименовать файлы *.log, добавить дату, убрать время, в каталоге и подкаталогах. Некоторыми потугами родилось такое:
for /R d:\backups\log %%N IN (end.log) DO set NAME=%%~tN
set DONE=%NAME:~0,-6%
ren %%N %DONE%.log
pause
И оно работает без параметра /R, но не с ним, такое чувство, что не присваивается значение переменной DONE. В результате переименования остаются одни расширения файлов. Подскажите пожалуйста в чём ошибка и каком именно месте выпрямлять руки.

Foreigner
15-12-2013, 15:51
@echo off

for /f "tokens=*" %%i in ('dir /b /s /a d:\backups\log\end.log') do call:ren "%%i" %%~ti
goto:eof

:ren
ren %1 %2%~x1

llxmanll
15-12-2013, 16:52
Работает, спасибо огромное.
Если не сложно, маленький вопрос. Почему
%%~ti выделяется с временем изменения файла.
а в
%2%~x1 его уже нет? Не вкурю никак...

Foreigner
15-12-2013, 17:00
его уже нет? »
Потому, что время было бы %3 =))




© OSzone.net 2001-2012