Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] CMD-скрипт для удаления временных файлов

Ответить
Настройки темы
CMD/BAT - [решено] CMD-скрипт для удаления временных файлов

Аватара для old_nick

Пользователь


Сообщения: 117
Благодарности: 0

Профиль | Отправить PM | Цитировать


Задача в следующем. Есть папка, в которой (в самой и в ее подпапках) помимо всего прочего много временных файлов вида *.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\""
Проблема 1. Если имя файла содержит пробелы, то все, что после первого пробела, отсекается (при этом имена папок с пробелами обрабатываются корректно).
Например, файл 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

 

Ветеран


Сообщения: 2205
Благодарности: 730

Профиль | Отправить PM | Цитировать


Iska, интересный подход. Работает

Отправлено: 11:18, 05-09-2013 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Добрый день! Прошу помощи, т.к. сам не силен.

Задача: удалить все файлы по определенной маске в определенной папке.

Имею такой код, выполняется правильно. Все файлы, содержащие T920 удаляются.
Код: Выделить весь код
@echo off
forfiles /p d:\1\ /m *T920*.pc3 /c "cmd /c del /q /f @file"
Как только путь имеет пробелы, то я его заключаю в кавычки.
Код: Выделить весь код
@echo off
forfiles /p "d:\1\" /m *T920*.pc3 /c "cmd /c del /q /f @file"
После этого ругается:
Код: Выделить весь код
ОШИБКА: Неправильный параметр или аргумент - '/q'.
Введите "FORFILES /?" для получения справки по использованию.
Реальный же путь будет такой c:\Users\%USERNAME%\AppData\Roaming\Autodesk\AutoCAD 2014\R19.1\rus\Plotters\

Не знаю как это побороть. Гугл не помог

Отправлено: 12:26, 19-02-2015 | #22


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Денис_Гальцов@fb, сделайте «pushd "Путь"» до вызова forfiles.exe, и «popd» — после. В самом «forfiles.exe» воспользуйтесь:
Цитата:
/p <Path>
Specifies the path from which to start the search. By default, searching starts in the current working directory.

Отправлено: 14:22, 19-02-2015 | #23


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Вчера почитал про pushd, с ней заработало, иначе никак не получалось у меня. Про popd не знал, спасибо!

Отправлено: 08:46, 20-02-2015 | #24



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] CMD-скрипт для удаления временных файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход