cmd удалить файлы старше n дней в windows

CMD Скрипт удаление файлов старше n дней

Удаление файлов через cmd утилитой forfiles.exe

Пример как с ее помощью можно удалять бекапы старше 20 дней:

обычный батник — и вуаля само делает неинтересную работу..

справка по FORFILES

Выбор файла (или набора файлов) и выполнение команды

с этим файлом. Программа полезна для пакетных заданий.

/P Путь, с которого начинается поиск.

По умолчанию используется текущая

/M Поиск файлов с помощью маски.

/S Рекурсивное выполнение программы forfiles

во всех подпапках, аналогично «DIR /S».

/C Команда, которая выполняется для каждого файла.

Строки команд необходимо заключать в прямые

Команда по умолчанию «cmd /c echo @file».

Следующие переменные могут использоваться

@file — возвращает имя файла.

@fname — возвращает имя файла без

@ext — возвращает только расширение имени

@path — возвращает полный путь к файлу.

@relpath — возвращает относительный путь к

@isdir — возвращает значение «TRUE», если типом

файла является папка, и «FALSE» для файлов.

@fsize — возвращает размер файла

@fdate — возвращает дату последнего изменения

@ftime — возвращает время последнего изменения

Для включения специальных символов в строку команды

следует использовать шестнадцатеричный код символа

в формате 0xHH (например, 0x09 для табуляции).

Перед внутренними командами CMD.exe необходимо ставить

/D Выбор файлов, у которых дата последнего изменения

больше или равна (+) либо меньше или равна

(-) указанной дате при использовании формата

«dd.MM.yyyy»; либо файлов, у которых дата последнего

изменения больше или равна (+)

текущей дате плюс «dd» дней либо меньше или

равна (-) текущей дате минус «dd» дней.

Допустимым числом дней «dd» является любое

число в диапазоне 0 — 32768.

«+» используется по умолчанию, если знак не указан.

/? Вывод справки по использованию.

FORFILES /P C:\WINDOWS /S /M DNS*.*

FORFILES /S /M *.txt /C «cmd /c type @file | more»

FORFILES /P C:\ /S /M *.bat

/C «cmd /c echo @path 0x09 был изменен 30 дней назад»

FORFILES /D 01.01.2001

/C «cmd /c echo @fname является новым с 1-янв-2001»

FORFILES /D +25.1.2011 /C «cmd /c echo @fname является новым сегодня»

FORFILES /M *.exe /D +1

FORFILES /S /M *.doc /C «cmd /c echo @fsize»

Источник

Batch file to delete files older than N days

I am looking for a way to delete all files older than 7 days in a batch file. I’ve searched around the web, and found some examples with hundreds of lines of code, and others that required installing extra command line utilities to accomplish the task.

Similar things can be done in BASH in just a couple lines of code. It seems that something at least remotely easy could be done for batch files in Windows. I’m looking for a solution that works in a standard Windows command prompt, without any extra utilities. Please no PowerShell or Cygwin either.

25 Answers 25

Later versions of Windows and Windows Server have it installed by default.

For Windows 7 and newer (including Windows 10):

The syntax has changed a little. Therefore the updated command is:

cmd удалить файлы старше n дней в windows. Смотреть фото cmd удалить файлы старше n дней в windows. Смотреть картинку cmd удалить файлы старше n дней в windows. Картинка про cmd удалить файлы старше n дней в windows. Фото cmd удалить файлы старше n дней в windows

cmd удалить файлы старше n дней в windows. Смотреть фото cmd удалить файлы старше n дней в windows. Смотреть картинку cmd удалить файлы старше n дней в windows. Картинка про cmd удалить файлы старше n дней в windows. Фото cmd удалить файлы старше n дней в windows

Move all the files (using /mov, which moves files and then deletes them as opposed to /move which moves whole filetrees which are then deleted) via robocopy to another location, and then execute a delete command on that path and you’re all good.

Also if you have a directory with lots of data in it you can use /mir switch

cmd удалить файлы старше n дней в windows. Смотреть фото cmd удалить файлы старше n дней в windows. Смотреть картинку cmd удалить файлы старше n дней в windows. Картинка про cmd удалить файлы старше n дней в windows. Фото cmd удалить файлы старше n дней в windows

Ok was bored a bit and came up with this, which contains my version of a poor man’s Linux epoch replacement limited for daily usage (no time retention):

USAGE

set /a strip=day*7 : Change 7 for the number of days to keep.

set dSource=C:\temp : This is the starting directory to check for files.

NOTES

This is non-destructive code, it will display what would have happened.

so files actually get deleted

February: is hard-coded to 28 days. Bissextile years is a hell to add, really. if someone has an idea that would not add 10 lines of code, go ahead and post so I add it to my code.

epoch: I did not take time into consideration, as the need is to delete files older than a certain date, taking hours/minutes would have deleted files from a day that was meant for keeping.

LIMITATION

epoch takes for granted your short date format is YYYY-MM-DD. It would need to be adapted for other settings or a run-time evaluation (read sShortTime, user-bound configuration, configure proper field order in a filter and use the filter to extract the correct data from the argument).

Did I mention I hate this editor’s auto-formating? it removes the blank lines and the copy-paste is a hell.

cmd удалить файлы старше n дней в windows. Смотреть фото cmd удалить файлы старше n дней в windows. Смотреть картинку cmd удалить файлы старше n дней в windows. Картинка про cmd удалить файлы старше n дней в windows. Фото cmd удалить файлы старше n дней в windows

Have a look at my answer to a similar question:

This deletes files older than a given date. I’m sure it can be modified to go back seven days from the current date.

update: I notice that HerbCSO has improved on the above script. I recommend using his version instead.

also forfiles /? not working for me too, but forfiles (without «?») worked fine.

And the only question I have: how to add multiple mask (for example «.log|.bak»)?

All this regarding forfiles.exe that I downloaded here (on win XP)

But if you are using Windows server forfiles.exe should be already there and it is differs from ftp version. That is why I should modify command.

For Windows Server 2003 I’m using this command:

For windows 2012 R2 the following would work:

to see the files which will be deleted use this

cmd удалить файлы старше n дней в windows. Смотреть фото cmd удалить файлы старше n дней в windows. Смотреть картинку cmd удалить файлы старше n дней в windows. Картинка про cmd удалить файлы старше n дней в windows. Фото cmd удалить файлы старше n дней в windows

For Windows Server 2008 R2:

This will delete all .sql files older than 90 days.

There are very often relative date/time related questions to solve with batch file. But command line interpreter cmd.exe has no function for date/time calculations. Lots of good working solutions using additional console applications or scripts have been posted already here, on other pages of Stack Overflow and on other websites.

Common for operations based on date/time is the requirement to convert a date/time string to seconds since a determined day. Very common is 1970-01-01 00:00:00 UTC. But any later day could be also used depending on the date range required to support for a specific task.

Jay posted 7daysclean.cmd containing a fast «date to seconds» solution for command line interpreter cmd.exe. But it does not take leap years correct into account. J.R. posted an add-on for taking leap day in current year into account, but ignoring the other leap years since base year, i.e. since 1970.

I use since 20 years static tables (arrays) created once with a small C function for quickly getting the number of days including leap days from 1970-01-01 in date/time conversion functions in my applications written in C/C++.

This very fast table method can be used also in batch code using FOR command. So I decided to code the batch subroutine GetSeconds which calculates the number of seconds since 1970-01-01 00:00:00 UTC for a date/time string passed to this routine.

Note: Leap seconds are not taken into account as the Windows file systems also do not support leap seconds.

Days since 1970-01-01 00:00:00 UTC for each year including leap days.

Calculating the seconds for year 2039 to 2106 with epoch beginning 1970-01-01 is only possible with using an unsigned 32-bit variable, i.e. unsigned long (or unsigned int) in C/C++.

But cmd.exe use for mathematical expressions a signed 32-bit variable. Therefore the maximum value is 2147483647 (0x7FFFFFFF) which is 2038-01-19 03:14:07.

Leap year information (No/Yes) for the years 1970 to 2106.

Number of days to first day of each month in current year.

Converting a date to number of seconds since 1970-01-01 is quite easy using those tables.

Attention please!

It is necessary to adapt the date string of the environment variable if date format in environment variable DATE is different to date format used by command FOR on %%

For example when %DATE% expands to Sun 02/08/2015 while %%

tF expands to 02/08/2015 07:38 PM the code below can be used with modifying line 4 to:

Alternatively following could be used to pass current date in correct format:

Here is the batch code with explaining comments which just outputs which file to delete and which file to keep in C:\Temp folder tree, see code of first FOR loop.

For optimal performance it would be best to remove all comments, i.e. all lines starting with rem after 0-4 leading spaces.

And the arrays can be made also smaller, i.e. decreasing the time range from 1980-01-01 00:00:00 to 2038-01-19 03:14:07 as currently supported by the batch code above for example to 2015-01-01 to 2019-12-31 as the code below uses which really deletes files older than 7 days in C:\Temp folder tree.

Further the batch code below is optimized for 24 hours time format.

For even more information about date and time formats and file time comparisons on Windows see my answer on Find out if file is older than 4 hours in batch file with lots of additional information about file times.

Источник

Пакетный файл для удаления файлов старше N дней

Я ищу способ удалить все файлы старше 7 дней в пакетном файле. Я искал в Интернете и нашел несколько примеров с сотнями строк кода, а другие, которые требовали установки дополнительных утилит командной строки для выполнения этой задачи.

Подобные вещи можно сделать в BASH всего за пару строк кода. Кажется, что-то хотя бы удаленно можно сделать для пакетных файлов в Windows. Я ищу решение, которое работает в стандартной командной строке Windows, без каких-либо дополнительных утилит. Пожалуйста, не PowerShell или Cygwin либо.

Смотрите forfiles документацию для более подробной информации.

Более поздние версии Windows и Windows Server устанавливают его по умолчанию.

Для Windows 7 и новее (включая Windows 10):

Синтаксис немного изменился. Поэтому обновленная команда:

Переместите все файлы (используя / mov, который перемещает файлы, а затем удаляет их, в отличие от / move, который перемещает целые деревья файлов, которые затем удаляются), через robocopy в другое место, а затем выполните команду удаления по этому пути, и вы все хорошо.

Также, если у вас есть каталог с большим количеством данных, вы можете использовать /mir переключатель

Ok немного соскучился и придумал это, которое содержит мою версию замены эпохи Linux для бедного человека, ограниченную для ежедневного использования (без сохранения времени):

ПРИМЕНЕНИЕ

set /a strip=day*7 : Измените 7 на количество дней, чтобы сохранить.

set dSource=C:\temp : Это начальный каталог для проверки файлов.

Это неразрушающий код, он будет отображать то, что случилось бы.

поэтому файлы на самом деле удаляются

эпоха : я не принял во внимание время, так как необходимо удалить файлы старше определенной даты, так как часы / минуты удалили бы файлы со дня, который предназначался для хранения.

ОГРАНИЧЕНИЕ

Эпоха считает само собой разумеющимся, ваш короткий формат даты ГГГГ-ММ-ДД. Его необходимо адаптировать для других настроек или оценки времени выполнения (прочитайте sShortTime, пользовательскую конфигурацию, настройте правильный порядок полей в фильтре и используйте фильтр для извлечения правильных данных из аргумента).

Надеюсь, это поможет.

Это удаляет файлы старше указанной даты. Я уверен, что это может быть изменено, чтобы вернуться на семь дней от текущей даты.

обновление: я заметил, что HerbCSO улучшил вышеупомянутый сценарий. Я рекомендую использовать его версию вместо.

тоже forfiles /? не работает для меня тоже, но forfiles (без «?») работал нормально.

Все это в отношении forfiles.exe, которое я скачал здесь (на win XP)

Но если вы используете сервер Windows, forfiles.exe уже должен быть, и он отличается от версии ftp. Вот почему я должен изменить команду.

Для Windows Server 2003 я использую эту команду:

Часто есть относительные вопросы, связанные с датой и временем, которые нужно решить с помощью командного файла. Но интерпретатор командной строки cmd.exe не имеет функции для вычисления даты / времени. Множество хороших рабочих решений, использующих дополнительные консольные приложения или скрипты, уже размещены здесь, на других страницах Stack Overflow и на других веб-сайтах.

Общим для операций, основанных на дате / времени, является требование преобразования строки даты / времени в секунды с определенного дня. Очень часто встречается 1970-01-01 00:00:00 UTC. Но любой последующий день также может быть использован в зависимости от диапазона дат, необходимого для поддержки конкретной задачи.

Уже более 20 лет я использую статические таблицы (массивы), созданные один раз с небольшой функцией C, для быстрого получения количества дней, включая високосные дни, с 1970-01-01 в функциях преобразования даты / времени в моих приложениях, написанных на C / C ++.

Примечание. Дополнительные секунды не учитываются, поскольку файловые системы Windows также не поддерживают дополнительные секунды.

Дни с 1970-01-01 00:00:00 UTC для каждого года, включая високосные дни.

Вычисление секунд для года с 2039 по 2106 с началом эпохи 1970-01-01 возможно только с использованием 32-разрядной переменной без знака, то есть без знака long (или без знака int) в C / C ++.

Но cmd.exe использует для математических выражений 32-битную переменную со знаком. Поэтому максимальное значение составляет 2147483647 (0x7FFFFFFF), что равно 2038-01-19 03:14:07.

Информация о високосном году (нет / да) за период с 1970 по 2106 гг.

Количество дней до первого дня каждого месяца в текущем году.

Преобразование даты в число секунд с 1970-01-01 довольно легко с помощью этих таблиц.

Внимание, пожалуйста!

Необходимо адаптировать строку даты переменной среды, если формат даты в переменной среды DATE отличается от формата даты, используемого командой FOR on %%

tF раскрывается в 02/08/2015 07:38 PM коде ниже может быть использован с модификации линии 4:

В качестве альтернативы можно использовать следующую для передачи текущей даты в правильном формате:

Для оптимальной производительности лучше всего удалить все комментарии, то есть все строки, начинающиеся с rem после 0-4 пробелов.

Далее код партии ниже оптимизирован для 24-часового формата времени.

Более подробную информацию о форматах даты и времени и сравнениях времени файлов в Windows см. В моем ответе « Узнайте, если файл старше 4 часов в пакетном файле, с большим количеством дополнительной информации о времени файла».

Источник

Вадим Стеркин

Как вы удаляете временные файлы? Вручную запускаете CCleaner или аналогичную программу, либо настроили ее запуск по расписанию? Я обхожусь встроенными средствами Windows, причем все сводится буквально к одной команде. Я хочу поделиться с вами двумя скриптами, которые давно служат мне верой и правдой для удаления ненужных файлов.

В Windows есть утилита для очистки диска, которую можно настроить для удаления заданных категорий файлов по расписанию. Она легко справится с очисткой временных файлов из расположений, известных системе, но не позволит удалять ненужные файлы из заданной вами папки. С помощью скриптов можно очищать не только временные файлы, но и любую папку. Например, я удаляю файлы из папок Test и Temp, которые служат для экспериментов и временного хранения файлов как в загрузках, так и документах.

В отличие от программных чистильщиков, скрипты можно гибко настроить, а регулярность выполнения очистки легко реализовать с помощью планировщика заданий Windows.

Эти скрипты позволяют удалять только файлы заданного «возраста» вместо полной очистки папки.

В статье вы найдете примеры скриптов и рассказ о том, как настроить задачу в планировщике одной командой. Вы также сможете скачать готовые файлы и создать задание для очистки папок за пару минут.

Скрипты

Вы можете воспользоваться на выбор скриптами CMD, VBS и PowerShell.

Можно использовать утилиту командной строки forfiles.exe, входящую в состав Windows 7 и новее (когда-то она входила в Windows 2000 Resource Kit). Одной командой удаляются все файлы из указанной папки и вложенных в нее.

Команда для выполнения

Конечно, в скрипте вы можете использовать несколько команд, каждая из которых будет удалять заданную папку. Справка по использованию утилиты вызывается командой forfiles /?.

Приведенный ниже скрипт VBS удаляет все файлы и папки, включая защищенные, с выводом списка удаленных файлов.

Команда для выполнения

Скрипт можно запускать из командного файла (CMD).

Как и в случае с утилитой forefiles.exe, можно реализовать очистку различных папок, указав каждую в отдельной команде.

PowerShell

Скрипт на PowerShell был в блоге Сергея Мариничева в рамках урока об операциях с файлами, но теперь страница доступна только в архиве интернета. Я скопировал ключевое содержимое для вас:

Выполнение очистки по расписанию

Для выполнения очистки папки по расписанию нужно создать скрипт с именем cleanup.cmd, содержащий команду для запуска, и скопировать его в любую папку из PATH (например, %windir%\system32). Поместите туда же скрипт VBS или PowerShell, если вы решили использовать его, а не утилиту forfiles.ехе.

Задание в планировщике создается одной командой:

Задание с именем CleanUp будет выполняться:

Откройте Пуск – Поиск – Планировщик заданий и вы увидите в библиотеке планировщика задание CleanUp.

Можете проверить работу задания в планировщике. Для этого щелкните правой кнопкой мыши по заданию и выберите Выполнить.

Готовые файлы

Загрузите архив и распакуйте в любую папку. В архиве варианты forfiles и VBS.

Благодарности

Авторами скриптов, которые я когда-то почерпнул из этой темы конференции OSZone, являются Keeper2006 и amel27 соответственно. В этой же теме вы найдете другие интересные варианты решения данной задачи, и туда же следует направлять вопросы по доработке скриптов под свои нужды.

А как вы избавляетесь от ненужных файлов – программой или скриптом? Настроена ли у вас очистка по расписанию?

Об авторе

Вас также может заинтересовать:

Я в Telegram

Подпишитесь на канал и читайте интересные записи чаще! Есть вопросы? Задайте их в чате.

комментариев 75

Великолепно! Взял на вооружение. Сам чищу по расписанию планировщика заданий следующим скриптом:

Спасибо за статью. Заинтересовала. Я удаляю с помощью ccleaner. Но ваш метод мне тоже понравился. Обязательно попробую. Много нового узнаю из вашего блога, но проблема в том, что обычный пользователь не будет заниматься настройкой. Я помню, когда я научилась содержать компьютер «в чистоте» и операционная система протянула год без глюков и без переустановки, это меня очень удивило.

equinox, я рад, что вам понравился скрипт. Как вижу, вы использовали похожий метод, но удаляли все целиком. Поскольку я часто открываю файлы без сохранения, они оседают во временных папках. И я предпочитаю иметь двухнедельную подушку, на случай, если они понадобятся.

Юлиана, CCleaner тоже можно запускать по расписанию с текущим набором настроек. Достаточно закинуть в планировщик команду: ccleaner.exe /auto. Конечно, нужно прописать путь к исполняемому файлу программы.

Юлиана: Много нового узнаю из вашего блога, но проблема в том, что обычный пользователь не будет заниматься настройкой. »

Мне очень приятно, что вы узнаете много нового из моего блога 🙂 Что же касается обычных пользователей, то мой блог не для них. Он для необычных людей, которые стремятся узнать что-то новое о Windows и расширить свой кругозор 🙂

Интересный вариант очистки, я пользовался CMD

На который в групповых политиках запланировано выполнение при выходе из системы. Ваш скрипт заинтересовал расширенными возможностями. Спасибо.

Спасибо. Давно ищу метод очистки дисков от временных файлов на ПК в домене. Этот вопрос пока не гуглил, а можно ли создавать задания в планировщике через GPO? Тогда можно использовать один из этих скриптов или ccleaner с ключом /auto.

IWS, это то же самое, что у equinox, просто код слегка другой.

did5: а можно ли создавать задания в планировщике через GPO? »

А зачем? Поставьте в качестве логон/логофф скрипта и все.

после чего скопируйте все содержимое папки в %windir%\system32.

Антон Плескановский, вы проверили и у вас не работает, или вы теоретизируете?

В schedule.cmd действительно написано

Но там нет слэша в конце, а это значит, что будет выполнен исполняемый файл с именем cleanup вне зависимости от его расширения.

Проверьте сами. Положите в System32 файл cleanup.bat

и выполните в командной строке

Да, все верно — со слэшем не доглядел.
Хотя скрипт чистит в папке Temp пользователя далеко не все файлы 😉
А так в принципе концепт чистки рабочий, это я недоглядел — каюсь.
Удачи Вам и новых интересных публикаций.

Антон Плескановский: Хотя скрипт чистит в папке Temp пользователя далеко не все файлы 😉 »

Возможно, они младше двух недель, ибо этот параметр задан в скрипте.

Спасибо за теплые пожелания! 🙂

осталось только добавить что в пакете sysinternals есть маленькая утилита sdelete помогающая безвозвратно удалять файлы.

SERG, для очистки временных файлов sdelete не нужна. Это, скорее, для укрепления конфиденциальности, что в домашних условиях не особо востребовано.

Спасибо, взял на вооружение.
Хотелось бы узнать как можно настроить планировщик, что бы задание выполнялось при выключении или выходе из системы пользователя.

Вадим, спасибо!
У меня ноут от НР, и для его обслуживания есть своя прога — HP Support Assistent. Вот она, как я понял и использует вхходящие в Windows 7 утилиты.
А так попробую использовать в ручную ваши советы.

K1RZA, если честно, я не вижу смысла в такой частой очистке временных файлов — при каждом выходе или выключении системы.

Но если очень хочется, настройте запуск задания по событию. Выход из системы — это 4647 в журнале Безопасность. выключение — событие 200 в журнале Diagnostics-Performance (о котором в блоге написано достаточно :).

Андрей, фирменные утилиты — это хорошо, если знаешь, что конкретно они делают 🙂

Спасибо!
взял на вооружение. Но только добавил не в планировщик, а сделал ярлычок в Total CMD, поместив рядом с VBS для создания папки с именем даты и новым текстовиком)

Очень рад, что зайдя на OSZONE, я увидел ссылку сюда. Хороший блог, хоть многое и знакомо, но нравится как вы объясняете. Спасибо за труд!

Алексей, спасибо за добрые слова о блоге 🙂

Что касается вашего вопроса про bak-файлы, то:
1. Определите список папок, в которых они создаются
2. Выполняйте для каждой папки команду forefiles.exe с ключом /m *.bak

Практически уже ничего не чищу. Поскольку всё временное находится в стандартных расположениях, раз в полгода захожу во встроенную очистку диска (за это время успевает скопиться 2,5-4GB мусора), удаляю.
Почему не чищу с фанатизмом? Всё предельно просто. HDD распределялся таким образом, чтобы на системном разделе оставался приличный запас свободного места. 4GB мусора никак на скорость работы не влияют.

Morpheus, прямой зависимости между скоростью работы и наличием временных файлов нет. Но есть другие факторы, по которым я не считаю нужным держать на диске по 2-4 Гб мусора на протяжении полугода.

Для оптимальной производительности HDD нужно дефрагментировать, и чем больше мусора, тем дольше проходит этот процесс. Да, в Windows 7 он выполняется в фоне, поэтому незаметен. Однако дефрагментация этих файлов создает ненужную нагрузку на HDD, что теоретически сокращает его срок службы.

Да и вообще, зачем гонять мусор по диску, если его можно удалить 🙂

Vadim Sterkin, справедливо, но это мизер. Наличие мусора при дефрагментации значительно меньше влияет на срок службы, чем сама дефрагментация 🙂

Подскажите, как удалять файлы из директории с исключением?
Пример:
Надо удалить все файлы и папки кроме одной папки.

Станислав, обратитесь к специалистам по скриптам — ссылка на тему форума в конце статьи.

ППц.
Это не решение проблемы.
Во первых скрипт это фаил а значит он должен гдето лежать куда пользователь должен иметь доступ.
Во вторых в папку windir\temp орбычный юзер даже доступ может не имеет, ибо у него есть свой темп который лежит в %temp%.
В 3 папку %temp% планировщиком не очистить ибо планировщик выполняет задачи от имени, а не для текущего пользователя(вы же понимаете что у каждого юзера папка %temp% своя), тоесть запускать скрипт нуно во время Логона(ЛогОффа).

Вот раборчий вариант.
Просто добавить в групповые политики в пункт User Configuration\Police\Windows Settings\Scripts\LogOn
Рабаотет для XP и 7(для всех NT5 и NT6)

Ну вы блин даётё: ППц.
Это не решение проблемы. »

Какой проблемы? Скрипт полностью справляется с задачей, отраженной в заголовке и содержании статьи.

Судя по вашему недовольству, вы примеряли его к корпоративной среде. Я пишу для домашних пользователей, если вы этого не заметили. Впрочем, ничто не мешает использовать скрипт в организации, задействовав функционал скриптов входа/выхода из системы. Это — методы выполнения скрипта, но к содержимому скрипта они отношения не имеют.

Ну вы блин даётё: Во первых скрипт это фаил а значит он должен гдето лежать куда пользователь должен иметь доступ. »

То же самое можно сказать и про ваш скрипт 🙂

Ну вы блин даётё: Во вторых в папку windir\temp орбычный юзер даже доступ может не имеет, ибо у него есть свой темп который лежит в %temp%. »

В статье не было ничего сказано про %WinDir%\Temp, но при запуске из планировщика с максимальными правами все будет работать, если пользователь обладает правами админа.

Ну вы блин даётё: Вот раборчий вариант. »

Я не буду писать о столь примитивных командах как rd и del 🙂 Ну а вы упустили главную соль скрипта — отсечку по дате.

Подскажите, каким образом можно соблюсти требования http://support.microsoft.com/kb/956324

%AllUsersProfile%\Application Data\Microsoft\Dr Watson
%Windir%\minidump
%SystemRoot%\Memory.dmp
1.Удалить только те %Windir%/$NtUninstallКБ Номер$-папки, созданные более месяца назад, как создать резервную копию файлы обновлений Windows. Не следует удалять те, которые были созданы за последние 30 дней.
2.Чтобы удалить кэш загрузки обновлений Windows, удалите все папки в папке %Windir%\SoftwareDistribution\download, которые были создано более 10 дней назад.
3.Удалите следующие файлы журнала в папке % Windir %:
KB*.log
Setup*.log
Setup*.old
SetupLog.txt
файле Winnt32.log
SET*.tmp
1.Удалите папку %Windir%\$NtServicePackUninstall$ на Удалите папки резервного копирования для пакетов обновления для Windows XP.
2.Удалить папку % windir%\ServicePackFiles для удаления установочные файлы и папки кэша для службы Windows XP пакеты обновления.
Нашёл вас через oszone
А так же, как удалить всё из папки профиля пользователей, работающих за 1 пк файлы по маске и старше n дней из заданной папки или удалить папку по маске и старше n дней, пример: удалить всё для пользователь1 и пользователь2 из C:\Documents and Settings\пользователь1\del\*.* и C:\Documents and Settings\пользователь2\del\*.* или саму папку del (маска), если она старше n дней, выполять надо в не зависимости от того, какой пользователь работает с пк?

В конце записи есть ссылка на тему в форуме по скриптам, обратитесь туда, плиз.

Вадим, а можно в этом запросе

сделать так чтобы оставалась 1 (последняя) копия не зависимо от даты. Это мне нужно, на случай сбоя резервного копирования т.к. этой командой я удаляю старые резервные копии.

Андрей, в статье есть ссылка на тему форума — там помогут.

А русский работает?
пробую
cscript //Nologo MyCleanUp.VBS 4 «c:\Мои» >MyCleanupScript.Log
не работает, а если переименовать в «moi» — ok. Беда в том что нужно именно эту папку чистить

Андрей, я понятия не имею, как в VBS обрабатываются пути с кириллицей. Спросите в указанной теме форума.

Но ничто не мешает вам использовать forfiles, сохранив скрипт в кодировке OEM.

Это все понятно, а вот можно изменит скриптом адрес который находится по умолчанию в %TEMP% например на D:\temp

Я рад, что вам все понятно. Поиск в блоге по запросу «переменные среды» привел бы вас сюда. TEMP/TMP меняются примерно так же, как и пользовательская PATH.

А можно в данный скрипт внести изменении чтобы не удалялись пара каталогов с данными из этой папки?

Точнее, произвожу очистку папки данным скриптом, в папке есть пара папок которые оттуда перенести нельзя,можно ли видоизменить скрипт таким образом,чтобы при срабатывании он их не трогал,заранее спасибо за ответ…

Денис, см. раздел «Благодарности» в конце записи.

Vadim Sterkin,

Спасибо. Не обратил внимания.

Сергей, а что конкретно вы сделали, что у вас ничего не получается?

Vadim Sterkin,

Сергей, слэши в путях неправильные. C:\users\ надо.

Вячеслав, очевидно, надо запускать какой-то скрипт на сервере, на котором крутится ваш сайт 🙂

Vadim Sterkin: Вячеслав, очевидно, надо запускать какой-то скрипт на сервере, на котором крутится ваш сайт 🙂
»

Вячеслав, как я могу советовать скрипт, если я даже не знаю ОС, под управлением которой работает сервер? 🙂 Для Windows вы скрипт уже знаете, гуд лак!

Потестировал предложенные скрипты. Файлы удаляет на УРА! Проблема с удалением вложенных папок в папке Temp. То есть в самих папка файлы стираются, а вот сами папки остаются. Как это можно исправить, подскажите пожалуйста.

Вадим, спасибо за оперативность!
rd удаляет вместе с самой указанной папкой TEMP. Нужное удалять только все содержимое этой папки. А внутри папки temp — могут быть другие папки со случайными именами.

Антон, даже если вы не владеете CMD, можно погуглить

Можно запуск скрипта предварять start /min …

Vadim Sterkin,

Использую данную команду для автоматического удаления файлов внутри своей временной папки. Удаляет хорошо, однако после работы основной программы остается не только файл temp но и log. Расширения нет и данный скрипт на нем спотыкается. Как обойти?
Заранее спасибо.

1. Я не телепат, поэтому не знаю, какую «данную» команду вы используете.
2. В конце записи есть ссылка на тему форума.

Вадим, речь идет об команде:

Vadim Sterkin: FOR /D %%p IN («%Temp%\*.*») DO rmdir «%%p» /s /q
»

Сергей, речь о том, что запросы на изменение скрипта нужно направлять в форум.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *