Очистка директорий по расписанию
Нужна прога, которая умеет чистить указанные директории по расписанию, и шобы с 2003 сервером работала.
В идеале: - создаем job - указываем какие папки надо периодически чистить - прописываем исключения - говорим когда все это запускать (скажем, ночью) - сохраняем job и забываем обо всем этом Заранее благодарствую! :молись: |
Ну так проще всего не искать программы, а написать в bat-файле в каких каталогах и что удалять с помощью масок. И задать этот bat на исполнение по расписанию с помошью стандартных Scheduled Tasks в панели управления.
|
это я уже пробовал
директории исчисляются сотнями и постоянно меняются конечно, можно заделать батник с масками, но его придется постоянно править :( может, возможен такой вариант: какой-нибудь прогой все это барахло бакапить в один файл с удалением источников, а потом уже батником удалять этот файл есть ли такой бакапщик, что удаляет источники? там еще есть проблема занятых системой файлов - их в процессе тоже надо как-то обходить |
Цитата:
В общем если так уж хочется программу, то смотри nnCron и nnBackup - есть там и удаление и бэкапы и расписание. Но опять же всё надо будет поднастраивать. |
Цитата:
добавлено через 20 минут ну т.е. сам батник я то написал @echo off del "D:\111\" но просто он передь удалением спаршивает y или n а как сделать чтобы y вводилось автоматом? добавлено через 5 минут и еще можно ли сделать так что бы он удалял не только файлы в директории 111 но и папки??? |
Цитата:
Код:
del D:\111\* /Q |
Цитата:
Цитата:
|
есть еще rmdir, но оно удаляет всё вместе с заданным каталогом, а как раз звездочку в качестве указания пути (удалять всё что внутри, а сам заданный каталог не трогать) почему то воспринимать не хочет.
таким образом на ум приходит следующее: Код:
@echo off |
FACE CONTROL результат выполнения батника - чистый катаолг
Код:
D:\WinRAR\Rar.exe m -r D:\WinRAR\arx "C:\Documents and Settings\Владелец\Local Settings\Temp\*.*" Вторая строка удалила архив. PS можно конечно написать на VB, но сейчас уже поздно. Если надо - напиши, попробую |
решение конечно оригинальное и достойное... :yees: но если в том темпаре гигабат по 30-40 набирается, то сказочка совсем недетская получится... а для мелочи - вполне.
|
Цитата:
Вариант был: рекурсия, которая может озябнуть в определенный момент. Второй вариант: то что я предложил сделать на VB тупой до безобразия и медленный алгоритм, без рекурсии. Когда сначала из пути удаляются файлы, потом ищется первый каталог и цикл повторяется. Если каталога нет то удаляется тот в котором находимся и начинаем с начала. Рано или поздно удалится всё. Третий вариант - именно с раром или winzip тогда был. Не помню... Цитата:
одновременно с батником запускается другой батник, который тупо грохает файлы arx.* (предполагается что архивы arx.001 ...) второй батник может вообще висеть в памяти и не выгружаться. А можно и выгрузить по условию. |
хм... может, я чего-то не понимаю, но вариант с rmdir-mkdir мне нравится гораздо больше...
двигать файлы в архив с тем, чтобы его тут же грохнуть... оригинально, конечно, но ресурсы... |
Цитата:
PS. Цитата:
_http://www.osp.ru/win2000/2006/04/2603566/ _http://technet.microsoft.com/ru-ru/library/cc753551(WS.10).aspx#Mtps_DropDownFilterText |
clear.bat:
Код:
del %1\*.* /q /s /f удаляет все в указанном каталоге, оставляя сам каталог на месте PS: точнее, даже так - в цикле только каталоги удалять надо |
Цитата:
Цитата:
Код:
pushd "%~1" && 1>nul 2>nul rd /s /q . У меня такая конструкция используется для чистки %TEMP%, правда не в батнике, а прям в ярлык зашито... For там можно и не приплетать... При отсутствии параметра %1 или если нельзя перейти в указанную папку - не делает ничего. При наличии папки - вычищает из неё всё содержимое (кроме файлов, которые используются, их система удалить не даёт) и завершает работу. Зачем вставлено "1>nul 2>nul"? rd при таком способе запуска ругается, что не может удалить папку (естественно - ибо она сама запущена изнутри этой папки :biggrin: ). А данное перенаправление скрывает всю "ругань". |
а вот сюрприз от Билли...
оказывается, при передаче имени каталога, который содержит знак =, передается вообще непонятно что! Код:
d:\tmp>clear.bat d:\=dta=\111 |
ну в общем-то знак равно "=" это служебный символ, так что ничего удивительного. и файлы/каталоги с названием содержащим служебные символы во всех руководствах категорически не рекомендуют создавать, даже если сама файловая это позволяет.
BorLase, от тебя, как знающего никсы не по наслышке, это более чем странно слышать... :p |
честно говоря, более чем озадачен :idontnow: это ж не URL, в котором он используется...
в общем - век живи, век наступай на грабли :contract: |
Цитата:
bat/cmd вообще очень не любят служебных символов в именах файлов/папок. Для данного конкретного случая (знак "=") сработает код Код:
pushd %1 && 1>nul 2>nul rd /s /q . Цитата:
А самое страшное в имени файла - это "%" и "!"... |
Цитата:
%, >, *, < - это все понятно а вот с какого перепуга = вдруг под запретом, не пойму; он же вродь бы нигде ни в одной конструкции cmd не используется? |
Для очистки каталога Temp стал использовать скрипт на VBS, при выполнении не видно, лишних вопросов тоже не задает, код корявый, но суть понятна
Нажмите здесь, чтобы увидеть текст полностью
'Скрипт для очистки каталога TEMP
'от устаревших временных файлов и 'каталогов. Временной период - 10 дней. ' sDIR - путь на ТЕМР. ' sDIR2 - путь на ТМР. 'Ложить в Автозагрузка/Startup ' Set fso = CreateObject("Scripting.FileSystemObject") sDIR="D:\Temp" sDIR2="D:\Tmp" sEXT="TMP" fDate=Date-10 Set objDIR=fso.GetFolder(sDIR) Set sf=objDIR.Files Set fcf = objDIR.SubFolders Set objDIR2=fso.GetFolder(sDIR2) Set sf2=objDIR2.Files Set fcf2 = objDIR2.SubFolders On Error Resume Next For Each efile in sf fEXT=fso.GetExtensionName(efile) if LCase(fEXT)=LCase(sEXT) Then fso.DeleteFile(efile) elseif efile.DateLastModified<fdate then fso.DeleteFile(efile) end if next For Each efile in sf2 fEXT=fso.GetExtensionName(efile) if LCase(fEXT)=LCase(sEXT) Then fso.DeleteFile(efile) elseif efile.DateLastModified<fdate then fso.DeleteFile(efile) end if next For Each f1 in fcf if f1.DateLastModified<fdate then fso.Deletefolder(f1) end if next For Each f2 in fcf2 if f2.DateLastModified<fdate then fso.Deletefolder(f2) end if next Err.Clear |
Sergeln, тоже вариант...
Только мне лично проще в виндовый шедулер вставить задачу Код:
pushd %TEMP% && rd /s /q . |
Цитата:
Проводник их жуёт, а вот FAR давится. |
Вложений: 4
Цитата:
FAR умеет работать в UTF-8. Даже cmd не "давится", если запускать с ключом "/u" (в Юникоде)... См. аттачи... |
Не спорю, я не разбирался.
Когда сталкиваюсь с такой проблемой то просто жмякаю shif+enter и уже в эксплорере парюсь. За наводку сенкс. |
Часовой пояс GMT +4, время: 18:04. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.