Всем привет.
Казалось бы, тривиальная задача которую в два шелчка можно запихнуть в nnCron - очистка временной папки Windows. Желательно с вложенными папками.
Получаем приблизительно такой скрипт:
Time: 5 17 1 * * *
Action:
WITHDIRS
PURGE-OLD: "D:\TEMP\*.*" 16
Action:
WITHDIRS
PURGE-OLD: "D:\TEMP\*.*" 16
А давай ка проверим его выполнение. И... получаем "Отказано в доступе". Работа скрипта прервана.
Ну разумеется, во временной папке что-то от самой системы тоже держит свой мусор. Перезапуск задания под правами админа ситуацию не меняет. И дополнительных опций, чтобы подсказать nnCron-у чтобы просто пропускал залоченные файлы тоже нет. Могу предположить что nnCron надо настроить как службу. Но проще, наверное, написать внешний скрипт. Пример ниже:
goto start
:fn1
for /d %%i in ("%~1\*") do (call :fn1 "%%i" & rd /q "%%i")
exit /b
:fn1
for /d %%i in ("%~1\*") do (call :fn1 "%%i" & rd /q "%%i")
exit /b
:start
rem Delete any files in subfolders
del . /f/s/q "D:\TEMP"
rem Delete empty subfolders
call :fn1 "D:\TEMP"
rem Delete any files in subfolders
del . /f/s/q "D:\TEMP"
rem Delete empty subfolders
call :fn1 "D:\TEMP"
Поместить его в командный файл и подсунуть на выполнение каждые 16 дней в свой nnCron. Командный файл BAT или CMD решайте сами. Разница между ними есть, но небольшая: для команд PATH/APPEND/PROMPT/SET/ASSOC в файлах с расширением CMD ERRORLEVEL устанавливается вне зависимости от ошибок. А в файлах с расширением BAT эти команды устанавливают ERRORLEVEL ТОЛЬКО при ошибке.
Успехов.
3 comments:
for /d %%i in ("%CD%") do (
set NNPROGRAMFILESSHORT=%%~si
)
START %NNPROGRAMFILESSHORT%\nncron.exe -ns -dir %NNPROGRAMFILESSHORT%
Чудово! Дуже допомагає чистити теку Темп після клієнта FossDoc. Дякую.
В строке del . /f/s/q "D:\TEMP" точка лишняя!
Post a Comment
А что вы думаете по этому поводу?