Мережа магазинів - кей - перегляд теми - підкажіть скрипт для видалення файлів по масці і датою

Потрібен скрипт (батник), який би видаляв файли з певним розширенням файлу, якщо дата старіше ніж 5-7 днів. Наприклад, в директорії зберігаються файли, нові і старі, потрібно щоб скрипт видаляв тільки старі файли.

З повагою, - = Shadow = -.

-= Shadow = - писал (а): Потрібен скрипт (батник), який би видаляв файли з певним розширенням файлу, якщо дата старіше ніж 5-7 днів. Наприклад, в директорії зберігаються файли, нові і старі, потрібно щоб скрипт видаляв тільки старі файли.

Немає! man find в частині -ctime

Best regards, Andrey.

-= Shadow = - писал (а): Потрібен скрипт (батник)


Саме батник? Це можна зробити на js або vbs.
Код: Виділити все // Script.js
// Цей скрипт може видалити всі файли
var dir = "."; // з поточної директорії
var ext = /.bak$/; // з розширенням .bak
var old = 7 * 24 * 60 * 60 * 1000; // старше 7 днів

var fso = new ActiveXObject # 40; "Scripting.FileSystemObject" # 41 ;;
var fc = new Enumerator # 40; fso.GetFolder # 40; dir # 41; .Files # 41 ;;
for # 40 ;; ! Fc.atEnd # 40; # 41 ;; fc.moveNext # 40; # 41; # 41; # 123;
var f = fc.item # 40; # 41 ;;
if # 40; # 40; f.DateLastModified WScript.Echo # 40; "Delete:" + f.Name # 41 ;;
// f.Delete # 40; true # 41 ;;
# 125;
# 125;

Видаляє всі файли по масці старше, ніж зазначена дата.

remove.bat писал (а): FOR / F "usebackq delims ==" %% X IN ( `dir / b * .txt`) DO FOR / F" tokens = 1,2,3 * delims =. "%% i in ( "%%

tX ") do IF %% k %% j %% i LSS% 3% 2% 1 del %% X

Коротше. все виявилося просто:

Set filesys = CreateObject ( "Scripting.FileSystemObject")
Set objFolder = filesys.GetFolder ( "e: \ temp")
For Each File in objFolder.Files
If LCase (filesys.GetExtensionName (File)) = "rar" AND _
DateDiff ( "D", File.DateLastModified, Now)> 7 Then
File.Delete true
End If
Next

З повагою, - = Shadow = -.

-= Shadow = - писал (а): Коротше. все виявилося просто:

Тільки щось не дуже віриться, що це запрацює в .bat - файлі.

А так, можна було б ще простіше, і працювати точно в сорочки з короткими рукавами буде:

find.exe e: \ temp -ctime +7 -delete

Але ж комусь сто кілобайт з і-нету завантажувати лінь, тому простіше написати щось криве, але своє.

Best regards, Andrey.

Ось, все думаю, про що це в такому говорите
Код: Виділити все Find

Пошук заданого рядка тексту в файлі або декількох файлах. Після пошуку в заданих файлах команда find виведе на екран всі рядки з цих файлів, що містять заданий зразок.
синтаксис

find # 91; / v # 93; # 91; / c # 93; # 91; / n # 93; # 91; / i # 93; "Рядок" # 91; # 91; диск: # 93; # 91; шлях # 93; имяфайла # 91 ;. # 93; # 93;
параметри

/ v
Виводить всі рядки, що не містять рядок, задану параметром рядок.
/ c
Підрахунок рядків, що містять рядок, зазначену параметром рядок, і відображення загальної кількості.
/ n
Виводить номера рядків перед самими рядками.
/ i
Задає пошук незалежно від малих і великих літер.
"рядок пошуку"
Обов'язковий параметр. Вказує групу символів, яку ви можете знайти буде проводитися. Необхідно укласти параметр рядок в лапки # 40; "рядок" # 41 ;.
# 91; диск: # 93; # 91; шлях # 93; Ім'я файлу
Задає розташування і ім'я файлу, в якому буде проводитись пошук заданого рядка символів.
/?
Відображення довідки в командному рядку.

Якщо ключ / i не вказано, команда find шукає саме те, що зазначено в параметрі рядок. Наприклад, для команди find символи "a" і "A" є різними. Якщо використовується ключ / i, команда find не розрізняє малі та великі літери, і символи "a" і "A" є однаковими.

Якщо рядок пошуку містить лапки, при виклику команди кожна лапки в рядку пошуку повинна бути замінена двома символами лапок # 40; "СтрокаСодержанія" "Лапки" # 41 ;.
* Використання команди find як фільтр

Якщо ім'я файлу пропущено, find діє як фільтр, отримуючи введення зі стандартного джерела виведення # 40; зазвичай клавіатура, канал або файл перенаправлення # 41 ;, і виводить всі рядки, що містять параметр рядок.
* Порядок синтаксису команди

Параметри і ключі команди find можуть бути задані в довільному порядку.
* Використання символів узагальнення

символи узагальнення # 40; * і? # 41; не можуть бути використані в іменах файлів і розширеннях, що задаються в команді find. Щоб шукати рядок в безлічі файлів, зазначених за допомогою символів узагальнення, можна використовувати команду find в команді for.
* Використання ключів / v або / n з ключем / c

Якщо в одній команді задані ключі / c і / v, команда find виведе на екран кількість рядків, які не містять задану рядок пошуку. Якщо в одній команді вказані обидва ключа: / c і / n, команда find ігнорує ключ / n.
* Використання команди find зі знаками перекладу рядка

Команда find не розпізнає символ перекладу рядка. Коли команда find використовується для пошуку тексту в файлі, який містить символи перекладу рядка, необхідно обмежити рядок пошуку текстом, який може бути знайдений між символами переведення рядка # 40; рядок не може перериватися символом переведення рядка # 41 ;. Наприклад, find не знайде збіг для рядка "файл податків" якщо новий рядок в файлі стоїть між словами "файл" і "податків".

Для виведення всіх рядків з файлу Pencil.ad, які містять слова «Точилка» служить наступна команда:

find "Точилка" pencil.ad

Для пошуку рядка, що містить текст, вказаний в лапках, необхідно спочатку взяти в лапки весь рядок. По-друге, необхідно використовувати подвійні лапки для кожних лапок, що містяться в рядку. Пошук Вчений помітив свій документ "" тільки для дискусії "". Це не остаточний звіт. "В Report.doc введіть:

find "Вчений помітив свій документ" "тільки для дискусії." "Це не остаточний звіт." report.doc

Якщо пошук потрібно провести в декількох файлах, слід використовувати команду find з командою for. Для пошуку файлів з розширенням .bat, що містять рядок "PROMPT", можна використовувати наступну команду:

for% f in # 40; *. Bat # 41; do find "PROMPT"% f

Для пошуку на жорсткому диску C файлів, що містять рядок "CPU" і відображення їх імен використовуйте символ каналу # 40; | # 41 ;, щоб направити результати команди dir в команду find:

dir c: \ / s / b | find "CPU"

Так як команда find проводить пошук, розрізняючи рядкові і великі літери, а команда dir виводить результати великими літерами, необхідно задати рядок "CPU" великими літерами або використовувати ключ / i в команді find.