сабж со стажем
очень нужен способ удаления файла автоматически, периодически, win8
1) всех файлов *.xml на диске f:\
2) всех файлов в папках thumbs на диске f:\
3) всех файлов больше 10мб по пути f:\ispy\video
лучше средствами системы =) а ещё было бы клёво если при сбоях выдавалось неиллюзорное сообщение об ошибке. то есть либо по 1 и 2 заданиям не найдено соответствий, либо что-то не удалось удалить...
из сторонних нашёл только прогу www.deleteoldfiles.ru/ она не обладает нужным функционалом
www.snapfiles.com/get/belvedere.html прекрасная программа, но ни в какую не работает с флешками, вообще не видит файлов на них (а f:\ это флешка, да)
Cyber-D's Autodelete Download вообще ничего не умеет
1) всех файлов *.xml на диске f:\
2) всех файлов в папках thumbs на диске f:\
3) всех файлов больше 10мб по пути f:\ispy\video
лучше средствами системы =) а ещё было бы клёво если при сбоях выдавалось неиллюзорное сообщение об ошибке. то есть либо по 1 и 2 заданиям не найдено соответствий, либо что-то не удалось удалить...
из сторонних нашёл только прогу www.deleteoldfiles.ru/ она не обладает нужным функционалом

www.snapfiles.com/get/belvedere.html прекрасная программа, но ни в какую не работает с флешками, вообще не видит файлов на них (а f:\ это флешка, да)
Cyber-D's Autodelete Download вообще ничего не умеет
Мне нужно уточнить кой-какое условие. Могут ли быть подпапки в папке thumbs? Удалять ли их?
в папках thumbs нет подпапок. thumbs папок несколько, и они не в корне
Собственно, вам остается только поменять каталоги в переменной $folder (я скриптовал свой тестовый каталог), сохранить этот скрипт как PS1-файл, а потом поставить запуск этого скрипта в планировщик задач по интересующему расписанию.
Периодичность уж сами как-нибудь назначьте, планировщик винды вам в помощь. Создаете файл clean.cmd в корне диска f: и копируете туда:
@ECHO off
@CLS
@DEL /S /F /Q *.xml
@FOR /R "%~dp0" %%n IN (.) DO (
@PUSHD %%n
@FOR /F "delims=" %%i IN ('DIR %1 /a-d /b') DO @IF /I %%i==thumbs ( @DEL /S /F /Q %%i\*.*)
@POPD)
@CD ispy
@CD video
@FOR /F "delims=" %%s IN ('DIR /b /a-d') DO @IF %%~zs GTR 1000000 (@DEL /S /F /Q %%s)
@PAUSE
Если выдает "файл не найден" - значит, и удалять было нечего
Hikedaya,
Ну, за PS может быть и будущее, но старые инструменты выкидывать еще рано. Ибо:
1. Сначала надо будет открыть Powershell и разрешить выполнение скриптов: Set-ExecutionPolicy RemoteSigned
2. Powershell по умолчанию отсутствует на XP.
@DEL /S /F /Q *.xml
Сдается мне, что там, откуда была запущена консоль, а она будет запущена откуда угодно, но не из каталога F:. И таким, образом, побьет кучу невинных файлов на системном диске, что только что и произошло на моей системе %)
Что же до Powershell и XP - в условиях задачи значилось наличие Win 8
Но предполагается, что она работает в каталоге из которого запущена и всех его подкаталогах. Не думаю, что она у вас много чего побила, разве что вы ее куда-нибудь в корень C: закинули...
Изначально я тестировал ее на txt-файлах, поскольку их быстрее создавать (у меня на это хоткей забинден). Нигде более файлы не удалялись - DEL пишет пути удаляемых файлов.
Поведение стандартное всегда: если выполняется командный файл, то рабочая папка - каталог командного файла, за исключением тех случаев когда командный файл вызывается из консоли. Тогда рабочая папка наследуется из консоли.
В принципе, можно добавить условие "выполнять всегда из каталога, где лежит файл". Тогда это будет выглядеть так:
@ECHO off
@CLS
@DEL /S /F /Q %~dp0\*.xml
@FOR /R "%~dp0" %%n IN (.) DO (
@PUSHD %%n
@FOR /F "delims=" %%i IN ('DIR %1 /a-d /b') DO @IF /I %%i==thumbs ( @DEL /S /F /Q %%i\*.*)
@POPD)
@CD ispy
@CD video
@FOR /F "delims=" %%s IN ('DIR /b /a-d') DO @IF %%~zs GTR 1000000 (@DEL /S /F /Q %%s)
@PAUSE
Зачем столько собачек? Достаточно перед "ECHO OFF". Снижает читаемость кода.
Но вообще да, после отладки их можно было бы убрать. Мне было влом.
Все верно, никаких противоречий. При старте какого-либо скрипта через Планировщик сначала всегда запускается исполняемая среда (CMD ли процессор, Powershell ли процессор, неважно), уже в него передается сам скрипт, с наследованием рабочего каталога. При запуске же скрипта руками - вы правы, рабочий каталог будет тем, где лежит файл.
Вот ради интереса, вы когда тестировали этот скрипт, через планировщик его прогоняли, или запускали двойным щелчком по скрипту?
Именно поэтому лучше все таки в скрипте как-то указывать, где он должен работать, что вы и сделали вот тут: @DEL /S /F /Q %~dp0\*.xml
Понимаю, что весь топик в итоге похож на срач, но имхо, этот срач продуктивен, ибо в будущем поможет избежать ситуаций, когда где-то удаляется не то, что надо
В планировщике можно указать рабочую папку, но кто это будет делать?
Срач? Да не сказал бы. Нормальное рабочее обсуждениё.
@ECHO off
CLS
DEL /S /F /Q %~dp0\*.xml
FOR /R "%~dp0" %%n IN (.) DO (
PUSHD %%n
FOR /F "delims=" %%i IN ('DIR %1 /a-d /b') DO IF /I %%i==thumbs ( DEL /S /F /Q %%i\*.*)
POPD)
CD ispy
CD video
FOR /F "delims=" %%s IN ('DIR /b /a-d') DO IF %%~zs GTR 1000000 (DEL /S /F /Q %%s)
Подготовлен для работы с планировщиком (убрал PAUSE в конце). Уничтожает все известные xml, Thumbs и файлы >10 мегабайт в папке F:\ispy\video (буква диска может меняться). Работает несмотря на атрибуты файлов и крики о помощи. Беспощаден к врагам Рейха на ОС начиная с NT (точно, win9x не проверял, но заработать может). В общем, пользуйтесь на здоровье.
А можно и PowerShell'ом. Оно тоже работает, это стильно, модно, молодежно. Только надо сначала разрешить выполнение PS-скриптов
Ржавый Филин, большое спасибо =) вот завтра замучает паранойя - возьму ваш скрипт =)
всё это из-за уродской программы ispy, разработчики которой забили на техподдержку бесплатных пользователей. сколько я им ни писал - бесполезно. программа зачем-то создаёт файлы превью для каждого видеофайла в отдельной папке, и, в оличие от видеофайлов, не удаляет их при огранизованной циклической записи, когда старые видеофайлы автоматически удаляются чтобы освободить место новым. рано или поздно файлов становится очень много (за 20 000), флешка начинает подвисать при доступе в эту папку, а с ней подвисает и программа. сейчас вот обнаружил что видеонаблюдение стоймя стоит с 7го числа. так же создаются какие-то файлы xml, в которых какая-то информация о видео, которые тоже постоянно растут в размерах, и конца этому нет. видимо из платных пользователей никто не юзает флешки в качестве хранилища и регулярно вручную его. ну и где-то уже 20 версий программы тянется глюк когда внезапно на флешке создаётся файл большого размера (около гига), который не играется а только жрёт место и иногда возможно тоже вешает программу когда она пытается что-то записать, а места нет.
Ржавый Филин, а можно сделать чтобы он лежал не на флешке, а в любом другом месте?
Ржавый Филин, не работает. ничего не удаляет
вижу что окно планировщика запускается и что-то делает, но файлы не удаляются
а! блин, вот я тупень... Set-ExecutionPolicy Unrestricted -то я забыл =) всё, работает =)
А вот насчет "не удаляет"... интересно. Напишите в конце файла pause и посмотрите вывод, чего он там пишет.
да, я положил файл в корень флешки
да, файлы xml в папке system32 целы
Попробуйте этот:
@ECHO off
CLS
DEL /S /F /Q "%~dp0\*.xml"
FOR /R "%~dp0" %%n IN (.) DO (
PUSHD %%n
FOR /F "delims=" %%i IN ('DIR %1 /a-d /b') DO IF /I %%i==thumbs ( DEL /S /F /Q "%%i\*.*")
POPD)
CD ispy
CD video
FOR /F "delims=" %%s IN ('DIR /b /a-d') DO IF %%~zs GTR 1000000 (DEL /S /F /Q "%%s")
PAUSE
@ECHO off
CLS
CD /D F:
DEL /S /F /Q "*.xml"
FOR /R "f:" %%n IN (.) DO (
PUSHD %%n
FOR /F "delims=" %%i IN ('DIR %1 /a-d /b') DO IF /I %%i==thumbs ( DEL /S /F /Q "%%i\*.*")
POPD)
CD ispy
CD video
FOR /F "delims=" %%s IN ('DIR /b /a-d') DO IF %%~zs GTR 1000000 (DEL /S /F /Q "%%s")
PAUSE
Теперь батник можно хранить где угодно.