|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] CMD-скрипт для удаления временных файлов |
|
CMD/BAT - [решено] CMD-скрипт для удаления временных файлов
|
Пользователь Сообщения: 117 |
Задача в следующем. Есть папка, в которой (в самой и в ее подпапках) помимо всего прочего много временных файлов вида *.tmp и ~$*.*
Нужно, чтобы эти временные файлы автоматически удалялись, если становятся старше 14 дней. Хочу решить эту задачу с помощью CMD-скрипта и утилиты forfiles.exe. На данный момент код такой: CLS @ECHO OFF forfiles.exe /P D:\Folder\ /S /M *.tmp /D -14 /C "cmd if @isdir==FALSE /C del \"@file\"" forfiles.exe /P D:\Folder\ /S /M ~$*.* /D -14 /C "cmd if @isdir==FALSE /C del \"@file\"" Например, файл D:\Folder\My SubFolder1\My SubFolder2\My Temp File.tmp будет выглядеть как D:\Folder\My SubFolder1\My SubFolder2\My Проблема 2. Команда del пропускает файлы с атрибутом "скрытый". Если же запускать ее с параметром -a:h, то она будет, наоборот, удалять скрытые файлы и пропускать файлы без атрибута "скрытый". Пробовал также del /f /q /a:h-h, чтобы удалялись и скрытые, и не скрытые файлы. Не помогло. Аналогичная ситуация с файлами, у которых атрибут "системный". Хотелось бы узнать: есть ли возможность удаления файлов с ЛЮБЫМИ атрибутами? Проблема 3. Не могу задать несколько масок файлов для forfiles.exe (параметр /M). Хотелось бы объединить 3 и 4 строки скрипта в одну и получить что-то вроде этого: CLS @ECHO OFF forfiles.exe /P D:\Folder\ /S /M *.tmp;~$*.* /D -14 /C "cmd if @isdir==FALSE /C del \"@file\"" Буду благодарен за любую помощь. |
|
Отправлено: 15:29, 17-09-2010 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать DemoN911, добавить еще ключ /S.
И все это есть в del /? |
Последний раз редактировалось El Sanchez, 23-09-2010 в 20:18. Причина: очепятка Отправлено: 14:36, 23-09-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Народ подскажите тупому чайнику как сделать чтобы при первом входе после инсталляции удалялась папка инсталл автоматически. Использовался метод $OEM$>$1>INSTALL
|
Отправлено: 21:17, 05-12-2010 | #12 |
![]() Ветеран Сообщения: 1064
|
Профиль | Отправить PM | Цитировать Можно создать дерево папок $OEM$\$1\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
и в нее положить файл dell.cmd для удаления папок |
Отправлено: 22:12, 05-12-2010 | #13 |
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Как поправить скрипт, чтобы считалась сумма файлов, которые реально удаляются. Файлы, занятые системой не считать.
|
Последний раз редактировалось sov44, 04-09-2013 в 15:44. Отправлено: 15:22, 04-09-2013 | #14 |
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Немного поправил скрипт, но всё равно не удаётся добиться нуля при повторном запуске. Есть идеи?
|
Отправлено: 22:35, 04-09-2013 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 03:16, 05-09-2013 | #16 |
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Iska, проверил, при повторном запуске сумма не ноль.
|
Отправлено: 08:58, 05-09-2013 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать sov44, Вы хотите, чтобы шло некое накопление, доступное между сеансами? Можно, например, хранить значение в файле, связанном с именем и местоположением пакетного файла, наподобие (тоже не проверялось):
Совсем же правильным будет использовать папку и файл в %AppData%. Можно пойти ещё дальше и хранить значение в реестре, в разделе текущего пользователя. И аналогичным образом извлекать значение в начале работы пакетного файла и записывать вобрат в конце работы. Цитата sov44:
![]() А почему Вы полагаете, что в промежутке между двумя запусками пакетного файла не могут создаваться никакие временные файлы или лог-файлы?! Почему они не могут создаваться и уже в момент его работы?! |
|
Отправлено: 09:25, 05-09-2013 | #18 |
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 10:00, 05-09-2013 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата sov44:
Тогда давайте попробуем так (не проверялось): @echo off setlocal enableextensions enabledelayedexpansion set /a iSumL = 0 for /f "usebackq delims=" %%i in (`dir /b /s /a:-d /a:-h "c:\*.log" "c:\*.temp" "c:\*.tmp" 2^>nul`) do ( set /a iSize = %%~zi 2>nul del /f /q "%%i" if not exist "%%i"set /a iSumL += !iSize! ) echo %iSumL% endlocal exit /b 0 |
|
Отправлено: 11:07, 05-09-2013 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки | avfiga | Скриптовые языки администрирования Windows | 71 | 07-01-2023 18:50 | |
CMD/BAT - [решено] Скрипт для удаления файлов. | Bond01 | Скриптовые языки администрирования Windows | 8 | 01-10-2010 11:02 | |
VBS/WSH/JS - [решено] WSH скрипт для удаления файлов (логика скрипта внутри) | Francyz | Скриптовые языки администрирования Windows | 11 | 25-05-2010 11:22 | |
Любой язык - нужен скрипт для удаления всех файлов кроме нужных для запуска Windows XP | Dark Ange1 | Скриптовые языки администрирования Windows | 11 | 07-03-2010 13:34 | |
Проблема удаления временных файлов Интернета | SAToNA | Microsoft Windows 2000/XP | 0 | 15-02-2006 07:31 |
|