17:15

сабж со стажем
очень нужен способ удаления файла автоматически, периодически, 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 вообще ничего не умеет

Комментарии
13.02.2015 в 17:44

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
Вам помогут bat-файлы :)

Мне нужно уточнить кой-какое условие. Могут ли быть подпапки в папке thumbs? Удалять ли их?
13.02.2015 в 17:47

сабж со стажем
я понимаю что мне bat может помочь =) но я реально дуб дубом в них

в папках thumbs нет подпапок. thumbs папок несколько, и они не в корне
13.02.2015 в 17:48

сабж со стажем
да, периодичность - раз в сутки
13.02.2015 в 17:57

We rise up for the things we believe in over and over again
BAT - в прошлом. Имеем Powershell, который в разы гибче и мощнее:

Собственно, вам остается только поменять каталоги в переменной $folder (я скриптовал свой тестовый каталог), сохранить этот скрипт как PS1-файл, а потом поставить запуск этого скрипта в планировщик задач по интересующему расписанию.
13.02.2015 в 17:59

We rise up for the things we believe in over and over again
Отдельно по шагу 2. Скрипт ищет все каталоги с именем Thumbs, удаляет файлы в этих каталогах (уровень вложенности таких каталогов в других не имеет значения), но сами каталоги не трогает. То есть останутся пустые папки Thumbs.
13.02.2015 в 19:14

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
кракозябрик,
Периодичность уж сами как-нибудь назначьте, планировщик винды вам в помощь. Создаете файл 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.
13.02.2015 в 19:34

We rise up for the things we believe in over and over again
Ржавый Филин, мааааааааленькая деталь. Где именно будет искать xml-файлы ваша строчка?
@DEL /S /F /Q *.xml
Сдается мне, что там, откуда была запущена консоль, а она будет запущена откуда угодно, но не из каталога F:. И таким, образом, побьет кучу невинных файлов на системном диске, что только что и произошло на моей системе %)
Что же до Powershell и XP - в условиях задачи значилось наличие Win 8 :)
13.02.2015 в 19:34

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
Ага. Именно поэтому в инструкции и сказано - положить на диск f: :D
Но предполагается, что она работает в каталоге из которого запущена и всех его подкаталогах. Не думаю, что она у вас много чего побила, разве что вы ее куда-нибудь в корень C: закинули...
13.02.2015 в 19:46

We rise up for the things we believe in over and over again
Ржавый Филин, этот скриптик я положил в папку E:\test, там же лежат и остальные XML. Однако, если поставить перед этой строкой pause и посмотреть, откуда идет инициализация консоли, написанное вас неприятно удивит :) Поэтому в самом скрипте лучше прописать явно: искать на диске F:
13.02.2015 в 20:01

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
Hikedaya, будете смеяться, но у меня это лежало в папке "E:\testing" :)
Изначально я тестировал ее на 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
13.02.2015 в 20:03

Тотальная неудачница и убийца жёстких дисков.
Срач из-за пропущенной строки "CD /D F:\"? Гуд!
13.02.2015 в 20:04

Тотальная неудачница и убийца жёстких дисков.
Ржавый Филин

Зачем столько собачек? Достаточно перед "ECHO OFF". Снижает читаемость кода.
13.02.2015 в 20:05

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
Линда Кайе, а почему нет-то? Можно посрачиться на тему PS vs CMD. Все равно топикстартер уже смылся куда-то :)
13.02.2015 в 20:06

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
Линда Кайе, люблю собак :)
Но вообще да, после отладки их можно было бы убрать. Мне было влом.
13.02.2015 в 20:16

сабж со стажем
я не смылся, я подождите =)
13.02.2015 в 20:33

We rise up for the things we believe in over and over again
Ржавый Филин, Поведение стандартное всегда:
Все верно, никаких противоречий. При старте какого-либо скрипта через Планировщик сначала всегда запускается исполняемая среда (CMD ли процессор, Powershell ли процессор, неважно), уже в него передается сам скрипт, с наследованием рабочего каталога. При запуске же скрипта руками - вы правы, рабочий каталог будет тем, где лежит файл.
Вот ради интереса, вы когда тестировали этот скрипт, через планировщик его прогоняли, или запускали двойным щелчком по скрипту? :)
Именно поэтому лучше все таки в скрипте как-то указывать, где он должен работать, что вы и сделали вот тут: @DEL /S /F /Q %~dp0\*.xml
Понимаю, что весь топик в итоге похож на срач, но имхо, этот срач продуктивен, ибо в будущем поможет избежать ситуаций, когда где-то удаляется не то, что надо :)
13.02.2015 в 20:46

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
Hikedaya, вы правы, через планировщик я ее не запускал. Надо полагать, что в этом случае она будет вызываться в C:\Windows\System32
В планировщике можно указать рабочую папку, но кто это будет делать? :)

Срач? Да не сказал бы. Нормальное рабочее обсуждениё.
13.02.2015 в 20:55

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
В общем, итоговый батник, на самый взыскательный вкус

@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-скриптов :)
13.02.2015 в 21:08

сабж со стажем
всем спасибо! Hikedaya, использовал ваш скрипт. надеюсь это не сильно страшно что я разрешил выполнение таких скриптов? =)

Ржавый Филин, большое спасибо =) вот завтра замучает паранойя - возьму ваш скрипт =)

всё это из-за уродской программы ispy, разработчики которой забили на техподдержку бесплатных пользователей. сколько я им ни писал - бесполезно. программа зачем-то создаёт файлы превью для каждого видеофайла в отдельной папке, и, в оличие от видеофайлов, не удаляет их при огранизованной циклической записи, когда старые видеофайлы автоматически удаляются чтобы освободить место новым. рано или поздно файлов становится очень много (за 20 000), флешка начинает подвисать при доступе в эту папку, а с ней подвисает и программа. сейчас вот обнаружил что видеонаблюдение стоймя стоит с 7го числа. так же создаются какие-то файлы xml, в которых какая-то информация о видео, которые тоже постоянно растут в размерах, и конца этому нет. видимо из платных пользователей никто не юзает флешки в качестве хранилища и регулярно вручную его. ну и где-то уже 20 версий программы тянется глюк когда внезапно на флешке создаётся файл большого размера (около гига), который не играется а только жрёт место и иногда возможно тоже вешает программу когда она пытается что-то записать, а места нет.
13.02.2015 в 21:16

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
кракозябрик, Мой скрипт можно просто кинуть в корень флешки и запускать вручную, если понадобится. Единственный плюс по сравнению с PS - переносимость, будет работать где угодно и когда угодно.
14.02.2015 в 00:07

We rise up for the things we believe in over and over again
кракозябрик, до тех пор, пока вы не будете запускать стащенные из Сети скрипты, предварительно их не прочитав и не проверив - все нормально :)
14.02.2015 в 07:02

сабж со стажем
Hikedaya, скрипты они и сами иногда стащиваются ~_~ без ведома пользователя =)

Ржавый Филин, а можно сделать чтобы он лежал не на флешке, а в любом другом месте?
14.02.2015 в 07:05

сабж со стажем
Hikedaya, планировщик вместо того чтобы выполнять скрипт, открывает его в блокноте :В

Ржавый Филин, не работает. ничего не удаляет
14.02.2015 в 07:34

сабж со стажем
Hikedaya, тоже не работает :в разобрался как указывать это всё в планировщике

изображение

вижу что окно планировщика запускается и что-то делает, но файлы не удаляются :(( при этом если запускаю скрипт из тотал коммандера, например - удаляются. оффтопик, конечно, но может поможете?
14.02.2015 в 07:56

сабж со стажем
Hikedaya,
а! блин, вот я тупень... Set-ExecutionPolicy Unrestricted -то я забыл =) всё, работает =)
14.02.2015 в 10:08

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
кракозябрик, без изменений кода - нет. Он сделан таким образом, чтобы местоположение файла указывало, откуда надо работать.
А вот насчет "не удаляет"... интересно. Напишите в конце файла pause и посмотрите вывод, чего он там пишет.
14.02.2015 в 10:16

сабж со стажем


да, я положил файл в корень флешки

да, файлы xml в папке system32 целы
14.02.2015 в 11:27

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
Хм... тогда есть два варианта. Начнем с первого :)
Попробуйте этот:

@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
14.02.2015 в 11:34

сабж со стажем
то же самое
14.02.2015 в 12:08

Shok ebasit hissra. Meraad astaarit, meraad itwasit, aban aqun. Maraas shokra. Anaan esaam Qun.
Мгм. Создал диск, проверил - воспроизвел проблему.

@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

Теперь батник можно хранить где угодно.