skorge
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Добрый день! Перечитал почти весь топик по интересующему вопросу, но так и не смог сделать то, что мне нужно. Есть N количество папок в который каждый день поступают текстовые и php файлы и практически сразу они перенаправляются специальной программой, путем вырезания из каталога. Иногда файлы "зависают" и для того чтобы их "протолкнуть", необходимо переименовать. Написал такой вот батник: Код: set "FTPdir=C:\FTP" for /r %FTPdir% %%i in (*.txt) do ren %%i %%~ni_.txt for /r %FTPdir% %%i in (*.php) do ren %%i %%~ni_.php | Но он переименовывает все файлы, а в некоторых папках необходимо чтобы файлы хранились достаточно долго и если батник постоянно выполнять, то имя файла получится слишком длинным. Вопрос: Как переименовывать файлы, сравнивая их по дате - к примеру если старше часа с файлом ничего не делать и продолжать лезть во все остальные папки и переименовывать. Пытался сделать по аналогии: Код: Автор: res2001, Отправлено:16:02 12-07-2012 Код: @echo off set "workdir=.\10\" set "LocalDateTime=" for /f "tokens=* delims=" %%a in ('wmic.exe OS get LocalDateTime /value') do >nul set "%%a" if not defined LocalDateTime exit set "LocalDate=%LocalDateTime:~,8%" set /a "LocalTime=1%LocalDateTime:~8,4%-1000" for %%a in ("%workdir%*") do call:workfile "%%~a" goto:eof :workfile set "filetime=%~t1" set "filedate=%filetime:~6,4%%filetime:~3,2%%filetime:~,2%" set /a "filetime=1%filetime:~11,2%%filetime:~14,2%-1000" set /a "diff=%LocalTime:~8,4%-%filetime%" set /a "diffdate=%LocalDate:~,8%-%filedate%" if %diffdate% gtr 1 goto:_del if %diffdate% equ 1 if %diff% lss -2354 goto:_del if %diffdate% equ 0 if %diff% gtr 5 goto:_del exit /b :_del echo del /f/q "%~1" exit /b | Но что то не совсем не получилось. Если есть какой то другой вариант буду рад услышать | Всего записей: 32 | Зарегистр. 13-10-2010 | Отправлено: 10:02 23-10-2013 | Исправлено: skorge, 10:02 23-10-2013 |
|