Autoit удалить файлы старше
Я ищу способ удалить все файлы старше 7 дней в пакетном файле. Я поискал в Интернете и нашел несколько примеров с сотнями строк кода и другие, которые требовали установки дополнительных утилит командной строки для выполнения задачи.
Подобные вещи можно сделать в BASH в всего пара строк кода. Кажется, что что-то, по крайней мере, удаленно можно было сделать с пакетными файлами в Windows. Я ищу решение, которое работает в стандартной командной строке Windows без дополнительных утилит. Пожалуйста, не используйте PowerShell или Cygwin.
Для этой цели был разработан gehrcke.de/timegaps. Он даже позволяет использовать более сложную схему удаления: помимо хранения файлов за последние 7 дней, он, например, также позволяет хранить по одному файлу за последние 8 недель, 12 месяцев, 2 года.
Дополнительные сведения см. В forfiles документации.
В более поздних версиях Windows и Windows Server он устанавливается по умолчанию.
Для Windows 7 и новее (включая Windows 10):
Немного изменился синтаксис. Поэтому обновленная команда:
Должен быть del @FILE, дело имеет значение. Также я предлагаю использовать / c echo @FILE для тестирования.
@Russell: @PATH - это полный путь, включая имя. @FILE - это только имя, поэтому, если вы имеете дело с подпапками, это не сработает.
Обратите внимание: если вы хотите, чтобы файлы были СТАРШЕ 10 дней, вам нужно указать -d "-10". -ve означает «старше», + ve означает «новее». Вы также можете указать формат DDMMYY или -DDMMYY в качестве параметра -d.
Я использовал этот синтаксис в Win Server 2008: forfiles / P "C: \ Mysql_backup" / S / M * .sql / D -30 / C "cmd / c del @PATH"
Этот ответ работает, когда «старше 7 дней» определяется как «изменено более 7 дней назад», а не «создано более 7 дней назад». Как достичь последнего?
Переместите все файлы (используя / mov, который перемещает файлы, а затем удаляет их, в отличие от / move, который перемещает целые файловые деревья, которые затем удаляются) с помощью robocopy в другое место, а затем выполните команду удаления по этому пути, и вы все хороший.
Также, если у вас есть каталог с большим количеством данных, вы можете использовать переключатель /mir
По большей части это довольно непрактичный ответ. Если у меня есть каталог с большим количеством данных, он не будет работать. Я бы выбрал один из вариантов ответа, который делает это «на месте»
Это никоим образом не непрактично - если "destination" находится в той же файловой системе, что и "source" , операция перемещения будет довольно легкой. Поскольку robocopy действительно надежен, он фактически будет работать для любого размера каталогов, неясных имен файлов, в основном произвольной длины пути и включать каталоги, если вам это нужно - чего, конечно, нельзя сказать о многих других Windows коммунальные услуги. Я бы использовал rd /s /q c:\destination вместо команды del или даже использовал бы другой запуск robocopy /mir c:\emptydir c:\destination для очистки каталога, если вы ожидаете проблем с именами файлов.
Мои мысли были скорее примерно такими: «Мои файлы уже находятся там, где я хочу. Я не хочу, чтобы их нужно было перемещать». «Логически удаление файлов - это то, что вы делаете, так что делайте это. Не перегружайте Robocopy, чтобы это сделать»
Я рекомендую этот однострочный режим для просмотра всех файлов в C:\test старше 7 дней. Чтобы удалить файлы, измените echo на del : forfiles /p "C:\test" /m "*.*" /c "cmd /c echo @file" /D -7
Ok было немного скучно, и он придумал это, которое содержит мою версию замены эпохи Linux для бедняков, ограниченную для повседневного использования (без сохранения времени):
ПРИМЕНЕНИЕ
set /a strip=day*7 : измените 7 количество дней хранения.
set dSource=C:\temp : это начальный каталог для проверки файлов.
ПРИМЕЧАНИЯ
Это неразрушающий код, он покажет, что произошло бы.
Поэтому файлы на самом деле удаляются
Февраль : жестко задано значение 28 дней. Биссекстильные годы - это ад, правда. Если у кого-то есть идея, что не нужно добавлять 10 строк кода, продолжайте и опубликуйте, поэтому я добавляю ее в свой код.
эпоха : я не принимал во внимание время, так как необходимо удалить файлы старше определенной даты, если взять часы / минуты, чтобы удалить файлы из дня, который был предназначен для хранения.
ОГРАНИЧЕНИЕ
epoch считает само собой разумеющимся, что ваш краткий формат даты - ГГГГ-ММ-ДД. Его необходимо адаптировать для других настроек или оценки времени выполнения (прочтите sShortTime, конфигурацию с привязкой к пользователю, настройте правильный порядок полей в фильтре и используйте фильтр для извлечения правильных данных из аргумента).
Я уже упоминал, что ненавижу автоформатирование в этом редакторе? он удаляет пустые строки, а копипаст - это ад.
Надеюсь, это поможет.
Слишком поздно и совершенно не связанное с этим, но 7daysclean.cmd звучит как отличное название для группы Synth-Punk.
Скопируйте этот код и сохраните его как DelOldFiles.vbs .
ИСПОЛЬЗОВАНИЕ В CMD: cscript //nologo DelOldFiles.vbs 15
15 означает удаление файлов старше 15 дней назад.
Есть разные версии. Ранние используют параметры стиля unix.
Моя версия (для сервера 2000 - обратите внимание на отсутствие пробелов после переключателей) -
И добавьте его в C: \ WINDOWS \ system32
Это не тот же ответ, синтаксис другой. Это была гениальная попытка помочь. Зная очень мало о командной строке Windows, я потратил часы разочарования, заставляя ее работать. Ключевым моментом в информации для меня был тот факт, что существуют разные версии (с разным синтаксисом), и что мне нужно было удалить пробелы. Ни то, ни другое не было включено в исходный ответ. (Я бы прокомментировал ответ, но у меня нет привилегий
Та же ошибка, что и в других ответах (включая принятый). Подстановочный знак *.* в forfiles не соответствует всем файлам. Он сопоставляет только файлы, в именах которых есть . (т. Е. Файлы с расширениями). OP ничего не сказал о требовании . в имени файла. Правильный параметр - /M * , но в любом случае это значение по умолчанию. В /M нет необходимости вообще.
IMO, JavaScript постепенно становится универсальным стандартом сценариев: он, вероятно, доступен в большем количестве продуктов, чем любой другой язык сценариев (в Windows он доступен с использованием Windows Scripting Host). Мне нужно очистить старые файлы во многих папках, поэтому вот функция JavaScript для этого:
Чтобы очистить каждую папку, просто добавьте еще один вызов функции clearFolder (). Этот конкретный код также сохраняет файлы exe и dll, а также очищает подпапки.
Как насчет этой модификации 7daysclean.cmd для учета високосного года?
Это можно сделать менее чем за 10 строк кода!
Редактировал Mofi:
Вышеупомянутое условие, созданное J.R., всегда оценивается как false из-за недопустимого синтаксиса.
И Month GEQ 2 также неверно, потому что добавление 86400 секунд для еще одного дня должно производиться в високосном году только для месяцев с марта по декабрь, но не для февраля.
Рабочий код для учета високосного дня - только в текущем году - в пакетном файле 7daysclean.cmd , опубликованном Джей будет:
Могу я добавить скромный вклад в эту уже ценную ветку. Я обнаружил, что другие решения могут избавиться от фактического текста ошибки, но игнорируют% ERRORLEVEL%, который сигнализирует об ошибке в моем приложении. И я законно хочу% ERRORLEVEL%, если это не ошибка «Файлы не найдены».
Некоторые примеры:
Специальная отладка и устранение ошибки:
Использование единственной строки для возврата ERRORLEVEL успеха или неудачи:
Использование единственной строки для поддержания уровня ERRORLEVEL равным нулю для успеха в контексте пакетного файла среди другого кода (ver> nul сбрасывает ERRORLEVEL):
На этапе задания CmdExec агента SQL Server я остановился на следующем. Я не знаю, ошибка ли это, но CmdExec на шаге распознает только первую строку кода:
Если у вас есть комплект ресурсов XP, вы можете использовать robocopy для перемещения всех старых каталогов в один каталог, а затем использовать rmdir для удаления только этого:
Я думаю, что ответ e.James хорош, поскольку он работает с немодифицированными версиями Windows еще в Windows 2000 SP4 (и, возможно, ранее ), но для этого требовалась запись во внешний файл. Вот модифицированная версия, которая не создает внешний текстовый файл при сохранении совместимости:
Чтобы быть верным исходному вопросу, здесь он находится в сценарии, который выполняет ВСЕ математические вычисления за вас, если вы вызываете его с количеством дней в качестве параметра:
ПРИМЕЧАНИЕ. В приведенном выше коде учитываются високосные годы, а также точное количество дней в каждом месяце. Единственный максимум - это общее количество дней, прошедших с 0/0/0 (после этого возвращается отрицательное число лет).
ПРИМЕЧАНИЕ. Математика идет только в одном направлении; он не может правильно получить будущие даты из отрицательного ввода (он попытается, но, скорее всего, пройдет последний день месяца).
В этом нет ничего удивительного, но мне нужно было сделать что-то подобное сегодня и запустить его как запланированную задачу и т. д.
Командный файл DelFilesOlderThanNDays.bat ниже с образцом exec w / params:
DelFilesOlderThanNDays.bat 7 C: \ dir1 \ dir2 \ dir3 \ logs * .log
Расширяя ответ aku, я вижу, что многие люди спрашивают о путях UNC. Простое сопоставление пути unc с буквой диска сделает файлы forfiles счастливыми. Сопоставление и отключение дисков может быть выполнено программно, например, в пакетном файле.
Это приведет к удалению всех файлов с расширением .gz старше 7 дней. Если вы хотите убедиться, что Z: не отображается ни на что другое, перед его использованием вы можете сделать что-нибудь простое, например
Этот сделал это за меня. Он работает с датой, и вы можете вычесть желаемую сумму в годах, чтобы вернуться во времени:
/F в cmd /c del @path /F принудительно удаляет конкретный файл в некоторых случаях, когда файл может быть доступен только для чтения.
dateYear - это переменная года, и вы можете изменить вычитание в соответствии с вашими потребностями.
Очень часто возникают вопросы, связанные с относительной датой / временем, которые нужно решить с помощью командного файла. Но интерпретатор командной строки cmd.exe не имеет функции для вычисления даты / времени. Множество хороших рабочих решений с использованием дополнительных консольных приложений или скриптов уже размещено здесь, на других страницах Stack Overflow и на других веб-сайтах.
Общим для операций, основанных на дате / времени, является требование преобразовать строку даты / времени в секунды с определенного дня. Очень часто бывает 1970-01-01 00:00:00 UTC. Но любой более поздний день также может быть использован в зависимости от диапазона дат, необходимого для поддержки конкретной задачи.
С 20 лет я использую статические таблицы (массивы), созданные один раз с помощью небольшой функции C, для быстрого получения количества дней, включая високосные дни с 1970-01-01, в функциях преобразования даты / времени в моих приложениях, написанных на C / C ++.
Этот очень быстрый табличный метод можно использовать также в пакетном коде с помощью команды FOR . Поэтому я решил закодировать пакетную подпрограмму GetSeconds , которая вычисляет количество секунд с 1970-01-01 00:00:00 UTC для строки даты / времени, переданной в эту процедуру.
Примечание. Дополнительные секунды не учитываются, поскольку файловые системы Windows также не поддерживают дополнительные секунды.
Дни с 1970-01-01 00:00:00 UTC для каждого года, включая високосные дни.
Вычисление секунд для года с 2039 по 2106 с началом эпохи 1970-01-01 возможно только с использованием беззнаковой 32-битной переменной, то есть unsigned long (или unsigned int) в C / C ++.
Информация о високосных годах (нет / да) за 1970–2106 годы.
Количество дней до первого числа каждого месяца в текущем году.
С помощью этих таблиц довольно легко преобразовать дату в количество секунд с 01.01.1970.
Внимание!
Формат строк даты и времени зависит от региона Windows и языковых настроек. Разделители и порядок маркеров, присвоенных переменным среды Day , Month и Year в первом цикле FOR GetSeconds , должны быть адаптированы к местный формат даты / времени, если необходимо.
Необходимо адаптировать строку даты переменной среды, если формат даты в переменной среды ДАТА отличается от формата даты, используемого командой FOR на %%~tF .
Например, когда %DATE% заменяется на Sun 02/08/2015 , а %%~tF расширяется до 02/08/2015 07:38 PM , приведенный ниже код можно использовать с изменением строки 4, чтобы:
В результате в подпрограмму передается только 02/08/2015 - строка даты без трех букв аббревиатуры дня недели и разделительного символа пробела.
В качестве альтернативы можно использовать следующее, чтобы передать текущую дату в правильном формате:
Теперь последние 10 символов из строки даты передаются в функцию GetSeconds , и поэтому не имеет значения, является ли строка даты переменной среды DATE с днем недели или без нее, если день и месяц всегда с двумя цифрами в ожидаемом порядке, т. е. в формате dd/mm/yyyy или dd.mm.yyyy .
Вот пакетный код с поясняющими комментариями, который просто выводит, какой файл удалить и какой файл оставить в дереве папок C:\Temp , см. Код первого цикла FOR .
Для оптимальной производительности лучше всего удалить все комментарии, то есть все строки, начинающиеся с rem после 0–4 ведущих пробелов.
Кроме того, приведенный ниже пакетный код оптимизирован для 24-часового формата времени.
Для получения дополнительной информации о форматах даты и времени и сравнении времени файлов в Windows см. Мой ответ на Узнать, если файл старше 4 часов в пакетном режиме файл с большим количеством дополнительной информации о времени файла.
В этом примере он работает, выбирая все файлы (. ) старше 30 дней и перемещая их в целевую папку. Вторая команда делает то же самое снова с добавлением команды PURGE , которая означает удаление файлов в целевой папке, которых нет в исходной папке. По сути, первая команда ПЕРЕМЕЩАЕТ файлы, а вторая УДАЛЯЕТ, потому что они больше не существуют в исходной папке при вызове второй команды.
Обратитесь к документации ROBOCOPY и используйте переключатель / L при тестировании.
Мой скрипт для удаления файлов старше определенного года:
Тебе следует сделать /d -3 (3 днями ранее). Мне это подходит. Таким образом, все сложные партии могут быть выброшены в мусорное ведро. Также forfiles не поддерживает пути UNC, поэтому установите сетевое подключение к определенному диску.
Та же ошибка, что и в других ответах (включая принятый). Откуда взялась эта странная привычка указывать *.* ? Подстановочный знак *.* не соответствует всем файлам в Windows. Он сопоставляет только файлы, в именах которых есть . . OP ничего не сказал о требовании . в имени файла. Правильный параметр - /M * , но в любом случае это значение по умолчанию. В /M нет необходимости вообще.
@AnT: Вы уверены? Я думаю, что *.* ведет себя точно так же, как * в Windows. Фактически, я только что попробовал это на своем компьютере, и dir *.* действительно перечислил test file , файл без расширения.
Рейбранд: Я тоже нахожу это удивительным, но обработка *.* несовместима, скажем, между dir и -m вариантом forfiles . Маска -m *.* действительно пропускает имена файлов без расширений, как я сказал в своем комментарии выше (попробуйте сами). Забавно то, что в документации MS явно указано, что по умолчанию используется -m *.* . Однако, если вы попробуете это в реальной жизни, вы увидите, что значение по умолчанию на самом деле -m * - все файлы повторяются.
Это удаляет файлы старше заданной даты. Я уверен, что его можно изменить, чтобы вернуться на семь дней назад с текущей даты.
update: Я заметил, что HerbCSO улучшил приведенный выше сценарий. Я рекомендую использовать его версию вместо этого.
@PATH - в моем случае это просто путь, поэтому пришлось использовать @PATH\@FILE
Также forfiles /? у меня тоже не работает, но forfiles (без "?") работал нормально.
И единственный у меня вопрос: как добавить несколько масок (например « .log | .bak»)?
Все это касается forfiles.exe, который я скачал здесь (на win XP)
Но если вы используете сервер Windows, forfiles.exe уже должен быть там, и он отличается от версии ftp. Вот почему я должен изменить команду.
Для Windows Server 2003 я использую эту команду:
Для Windows Server 2008 R2:
Это приведет к удалению всех файлов .sql старше 90 дней.
Для Windows 2012 R2 будет работать следующее:
Чтобы увидеть файлы, которые будут удалены, используйте это
ROBOCOPY мне отлично подходит. Изначально предложил мой Иман. Но вместо того, чтобы перемещать файлы / папки во временный каталог, а затем удалять содержимое временной папки, переместите файлы в корзину .
Например, это несколько строк моего командного файла резервной копии:
Он очищает все, что старше 15 дней, из моей папки «Temp» и 30 дней для всего, что находится в моей папке резервных копий AutoCAD. Я использую переменные, потому что строка может быть довольно длинной, и я могу повторно использовать их для других мест. Вам просто нужно найти путь к вашей корзине, связанный с вашим логином.
Это у меня на рабочем компьютере, и он работает. Я понимаю, что у некоторых из вас могут быть более ограничительные права, но все равно попробуйте;) Найдите в Google объяснения по параметрам ROBOCOPY.
Существующий второй по количеству голосов ответ также поддерживает RoboCopy. Конечно, вы используете несколько другие варианты, но он близок к существующему ответу.
У этого поста новое содержание - перемещение файлов в корзину. Это еще не было предложено с помощью Robocopy, и он полностью отвечает на исходный пост с помощью встроенной однострочной команды. Работает лучше, чем сочетание команд DEL и RMDIR, потому что файлы можно восстановить из корзины. Привет, я здесь еще новичок - дай мне передохнуть;)
Другими словами - не пытайтесь придумывать это, если вы действительно не можете использовать сторонние инструменты.
Более гибкий способ - использовать FileTimeFilterJS.bat :
Скрипт позволит вам использовать такие измерения, как дни, минуты, секунды или часы. Выбрать погоду для фильтрации файлов по времени создания, доступа или модификации Список файлов до или после определенной даты (или между двумя датами) Выбрать, отображать ли файлы или каталоги (или и то и другое) Быть рекурсивным или нет
( настоятельно рекомендуется к прочтению/поиску )
Руководство к действию по работе c AutoIt.
Помогите пожалуйста. Нужен маленький скриптик для решения некоторых рутинных задачь.
Вот что нужно сделать последовательно:
1) в папке DIR1 находим и удаляем файлы в названии которых присутствует text_1
2) в папке DIR2 находим xxx.sif и удаляем строки, в которых присутствует text_1
3) в папке DIR3 находим xxx.inf и добавляем в его секцию [XXX] несколько строчкек (text_2, text_3, . text_n)
4) в папке DIR4 находим yyy.inf ищем в его секции [YYY] text_4 и заменяем его на text_5
5) сохраняем все изменения и выводим отчёт о проделанной работе :-)
З.Ы. несколько замечаний по формулировке задачи:
- INF-файл не просто текст, поэтому корректней говорить о переопределении параметров секции, а не "замене текста";
- соответственно, по п.4 возможно имелась ввиду замена строк целиком, а не вхождений текста;
- секции могут не отличаться от INI-файлов, в этом случае можно задействовать встроенные ф-ции AutoIT INI*.
Последний раз редактировалось amel27, 04-12-2006 в 05:54 .
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
2Creat0R
Не совсем так,точнее совсем не так
Дать ссылку на картинку(системную,т.е на ту которая находится в системе по умолчанию,например в папке system32) это легко.
Мне надо чтобы картинка интегрировалась внутрь скрипта,с расположением которое ей указано и всегда была там,независимо от того есть такая картинка в системе или нет.
Ошибочка выпадает (см. файл)
Подключение дополнительных (пользовательских) функций, файлы расширений находятся в папке \Include установочного каталога. Так как файлы не загружены, то и функция (соответственно) неопознана.
С пользовательскими функциями разобрался. Пришлось, всего-лишь, переустановить AutoIt.
Что касаеися самого скрипта:
1) Удаление файлов в заданном каталоге по маске - работает!
1.2) Возвращает количество удаленных файлов - где и как посмотреть?
2) Удаление строк файла по условию вхождения заданного текста - работает!
2.1) Возвращает: 1 - успех, 0 - ошибка. Коды ошибок - так же не знаю где их увидеть.
3) Добавление заданного массива строк в секцию INF-файла - не работает.
3.1) Возвращает: 1 - успех, 0 - ошибка. Коды ошибок - очень хотелось бы их посмотреть.
4) Замена текста в пределах заданной секции INF-файла - не работает.
4.1) В чём ошибка - так же не видно.
Я понимаю, что всё от криворукости. но всё же? :-)
Ещё вопрос: строки text_2, text_3, text_n, а так же text_4 и text_5 содержат всякие знаки припинания (запятаи, кавычки, скобки и пр.). Может, нужно принимать какие то дополнительные меры, что бы всё это правильно было интерпритировано?
в 4 пункте, действительно можно бы было не менять текст, а изменить значение параметра.
Иногда надо сделать удаление файлов старше n дней. Например Backup’ ы. Можно делать это вручную, отсортировать их по дате и удалить, а можно воспользоваться скриптом. В данном примере мы рассмотрим скрипт для удаления файлов старше n дней и добавим задание в планировщик Windows Server 2012R2.
Содержание:
1. Скрипт удаления файлов старше n-дней
2. Создание задания в планировщике задач
Скрипт на самом деле очень простой, создается в PowerShell и выглядит он следующим образом:
Где:
F:\backup\ - путь, в какой папке мы будем с вами искать файлы для удаления *.* - имя (маска) файлов /d -30 - старше скольки дней нам необходимо удалить файлы.
Вот так это выглядит в PowerShell:
Осталось только его выполнить и все.
Все хорошо, у нас есть скрипт. Мы можем выполнять его вручную, когда необходимо очистить наши бекапы. Но зачем выполнять это вручную? Мы поручим планировщику запускать наш скрипт и избавимся сами от рутинной работы.
Итак, что нам для этого надо?
Для начала идем в "Пуск -> панель управления -> Администрирование" и запускаем там "Планировщик заданий".
Выбираем пункт "Создать задачу":
На вкладке "Общие" задаем имя задания, его описание и пользователя, от которого оно будет выполняться. По умолчанию там будет пользователь, под которым вы вошли в данный момент в систему.
Далее переходим на вкладку "Триггеры" и создаем расписание, когда мы будем запускать наше задания. У меня настроено в 10:00 каждые 2 дня.
Далее идем на вкладку "Действия" и задаем действие, которое будет выполняться. Выбираем "Запуск программы"
программу или сценарий
и указываем путь до PowerShell:
А аргументе указываем путь до нашего скрипта, который мы создали ранее:
Нажимаем "Ок" и еще раз "Ок"
Все, на этом наше задание создано. Осталось дождаться, когда будет выполнено наше действие по расписанию и проверить, все ли правильно было настроено.
Admin 25.05.2017 15:39
Странно. У меня все работает отлично на нескольких серверах. Попробуйте поставить галочку "Выполнить с наивысшими правами" А какой код ошибки при выполнении задачи? Можно посмотреть в журнале
Анонимус 25.07.2017 10:37
Все работает правильно на серверных системах , лично проверил. Проблемы были на win 10 Константин 31.10.2017 05:40
Здравствуйте А как сделать чтоб при удалении оставалось допустим последние 3 файла даже если они старше 30 дней?
Admin 01.11.2017 10:25
Самый простой вариант - Вам необходимо выставить в скрипте кол-во дней, которые будут подходить под Ваши файлы!
Мудрый Филин 06.02.2020 07:38
а как сделать так, что бы удалялись файлы каждый 10 минут? Как указать минуты? Александр 28.02.2020 10:28
У меня ругается вот так. forfiles.exe : ОШИБКА: Неправильный параметр или аргумент - &d&. DeleteFiles.ps1:1 знак:9 + CategoryInfo : NotSpecified: (ОШИБКА: Неправи. аргумент - &d&.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError
Ваш покорный слуга - компьютерщик широкого профиля: системный администратор, вебмастер, интернет-маркетолог и много чего кто. Вместе с Вами, если Вы конечно не против, разовьем из обычного блога крутой технический комплекс.
Здравствуйте! Помогите пожалуйсто создать скрипт для удаления старых файлов и папок старше n - дней из определенной папки.
Нашел такой скрипт который удаляет старые файлы из корневого каталога, а как переделать его так что б он удалял все папки и файлы старше n - дней незнаю.
Если кто то сможет помочь заранее огромное спаибо .
как переделать его так что б он удалял все папки и файлы старше n - дней незнаю » |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Да действительно данный скрипт удаляет только файлы и только в папке C:\Test, а надо переделать так что б удалял все что есть в папке C:\Test.
надо переделать так что б удалял все что есть в папке C:\Test » |
-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум
Set objFSO = CreateObject("Scripting.FileSystemObject")
DelOld strFldr, intDays
Function DelOld(sFldr, iDays)
Dim oD, cF, cD, oI
Set oD = objFSO.GetFolder(sFldr)
Set cF = oD.Files
Set cD = oD.SubFolders
Этот блок кода необходимо подставить в страрый код? » |
-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум
avfiga, комментарии только усложнят читаемость, не в обиду - код и без того прозрачен. хотя, если очень нужно, могу сделать построчный разбор
Конфигурация компьютера | |
Процессор: Intel i5-6600 | |
Материнская плата: Gigabyte GA-Z270X-UD5 | |
Память: HX424C12SB2K2/16 - 16 Gb | |
HDD: Samsung 860 EVO MZ-76E500BW - 1 шт., Samsung 860 QVO MZ-76Q2T0BW - 1 шт, Seagate ST1000DM003 - 1 шт, WD WD40EFRX - 1 шт. | |
Видеокарта: Nvidia GeForce GTX 1070 | |
Звук: Creative X-Fi Titanium Fatal1ty Professional (PCI Express) | |
Блок питания: Seasonic SS-660XP (Platinum-660) | |
CD/DVD: PIONEER DVR-218L | |
Монитор: ASUS PA248QJ, 24,1" | |
Ноутбук/нетбук: Lenovo ThinkPad X270 | |
ОС: Windows 7 Pro 64-bit | |
Индекс производительности Windows: 7,6 | |
Прочее: Корпус: Cooler Master 690 II Advanced (RC-692A-KKN5). Колонки: Microlab H-500D. Мышь: Corsair M65 PRO RGB. ZyXEL Keenetic Ultra II. |
Спасибо за труды.
Меня тоже заинтересовал данная тема. Если не затруднит, ответь на пару вопросов:
1.Этот скрипт удаляет файлы и папки основываясь только на дату создания или дата последнего изменения тоже играет для него роль?
2.А как будет обрабатываться объект если каталог подпадает под удаление (т.е. создан раньше), а файл в этом каталоге нет (т.е. создан позже)?
-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.
Здравствуйте! Помогите пожалуйсто создать скрипт для удаления старых файлов и папок старше n - дней из определенной папки.
Нашел такой скрипт который удаляет старые файлы из корневого каталога, а как переделать его так что б он удалял все папки и файлы старше n - дней незнаю.
Если кто то сможет помочь заранее огромное спаибо .
Конфигурация компьютера | |
Процессор: Intel Pentium M 2 GHz | |
Материнская плата: HP Compaq nc6220 | |
Память: 1024 MB | |
HDD: 80 GB | |
Видеокарта: Mobile Intel 915GM | |
Звук: SoundMAX Integrated | |
Монитор: HP L1706 17'' | |
ОС: Windows XP SP3 |
Вот готовое решение, которое у меня выполняется через MS SMS 2003 для очистки каталогов временных папок на компьютерах пользователей.
Переменной, отвечающей за время устаревания файла является PurgeTime. В данный момент удаляются все файлы, которые старше 14 дней.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Конфигурация компьютера | |
Процессор: Intel Pentium M 2 GHz | |
Материнская плата: HP Compaq nc6220 | |
Память: 1024 MB | |
HDD: 80 GB | |
Видеокарта: Mobile Intel 915GM | |
Звук: SoundMAX Integrated | |
Монитор: HP L1706 17'' | |
ОС: Windows XP SP3 |
avfiga, он удаляет и старые файлы и папки, если они пустые.
if oSubFolder.Size = 0 then oFSO.DeleteFolder oSubFolder.path
Может не в тему, но всёже отпишу, искал способ удалить файлы в папке которые старше X дней, и наткнулся на утилитку forfiles.exe входящию в набор Recourse kit, с помощью её можно легко добится этих целей. К примеру
forfiles.exe /p D:\Backup\IM\ /s /m *.* /d -14 /c "cmd /c del /q /f @file" |
Конфигурация компьютера | |
Процессор: Athlon 64 X2 4400+@2.8 Ггц | |
Материнская плата: Asus M2A-VM | |
Память: 2x1 gb Hyundai | |
HDD: WDC WD2500AAJS-00VTA0 (232 Гб) | |
Видеокарта: Asus EAH2600 PRO (HD 2600 Pro) | |
Звук: Realtek ALC883 @ ATI SB600 - High Definition Audio | |
Блок питания: FSP Group 350 w | |
CD/DVD: Optiarc DVD RW AD-7200S | |
Монитор: Samsung SyncMaster 721N 17" | |
ОС: Windows 7 Ultimate | |
Индекс производительности Windows: 5.2 | |
Прочее: TV - tuner Beholder 507 FM |
как добавить задание forfiles.exe в планировщик? не получается. » |
Здравствуйте, скажите а можно ли переделать этот код так что бы он удалял только скрытые файлы и перед каждым удалением спрашивал удалить файл или нет?
дата создания файла не важна.
Конфигурация компьютера | |
Прочее: HP Pavilion DV6 ef |
________________________________________________________________________
Вариант сценария на языке Jscript расположен в разделе:
Последний раз редактировалось deepred, 20-07-2010 в 20:05 . Причина: Добавлена ссылка на Jscript
Конфигурация компьютера | |
Процессор: 3.0 ггц | |
Память: 4 гб | |
ОС: Windows 7 максимальная х64 | |
Индекс производительности Windows: 5,9 |
Вот готовое решение, которое у меня выполняется через MS SMS 2003 для очистки каталогов временных папок на компьютерах пользователей. » |
А как сделать, чтобы удалялись файлы, находящиеся в папках которые задаются в переменных окружения системы и пользователя
User variables
System variables
я их меняю, а в скрипте прописаны конкретные пути к этим папкам, т.е. скрипт на изменение User variables и System variables
не смотрит.
В крайнем случае, как можно указать конкретную папку, к примеру E:\Temp
Ребята, а можно в этом запросе:
сделать так чтобы оставалась 1 (последняя) копия не зависимо от даты. Это мне нужно, на случай сбоя резервного копирования т.к. этой командой я удаляю старые резервные копии.
Читайте также: