Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Windows Новый топик    Ответить
 Cmd-файл для удаления файлов и запуск его в шедулере  [new]
George-III
Member

Откуда:
Сообщений: 3689
Всем привет, не знаю как реализовать, необходимо запускать командный файлик, который будет проверять в папках наличие файлов только с определенным названием и расширением, всё остальное необходимо удалять... Кроме того, его надо запускать используя стандартный планировщик заданий win2003/xp только в последний день месяца(!!!).Подскажите пожалуйста!
8 авг 07, 08:48    [4493883]     Ответить | Цитировать Сообщить модератору
 Re: Cmd-файл для удаления файлов и запуск его в шедулере  [new]
MZH
Member

Откуда: Moscow
Сообщений: 3883
К чему сказано про проверку наличия? Быть может, надо просто удалять все, что не соответствует маске?
Можно, например, при помощи RAR упаковать все нужные файлы, а все остальные потереть нафиг, после чего упакованные восстановить обратно.
А что касается запуска в последний день месяца, то это легко решается созданием 4 различных заданий, группирующих месяцы с одинаковой продолжительностью.
8 авг 07, 12:25    [4495434]     Ответить | Цитировать Сообщить модератору
 Re: Cmd-файл для удаления файлов и запуск его в шедулере  [new]
George-III
Member

Откуда:
Сообщений: 3689
MZH
К чему сказано про проверку наличия? Быть может, надо просто удалять все, что не соответствует маске?

Да, я неточно выразился!
MZH
Можно, например, при помощи RAR упаковать все нужные файлы, а все остальные потереть нафиг, после чего упакованные восстановить обратно.

Делаю аналогично, но без архивирования - переносом файлов в другой каталог, удаления всего в папке и возвратом назад перемещённых файлов.
Проблема в том, что это выполняется очень медленно, что не устраивает, вот я и задал вопрос, можно ли делетить файлы, которые не соответсвуют некой маске!
MZH

А что касается запуска в последний день месяца, то это легко решается созданием 4 различных заданий, группирующих месяцы с одинаковой продолжительностью.

Так и сделано, но создается несколько расписаний, проблема в феврале, я несколько однократных расписаний до 2010 года, соответсвенно по 28 и 29 числам, но это не очень удачно, так как потом на каждый следующий год надо дополнять ещё одним заданием...
Конечно надо ещё дожить до 2010, но всё же как-то неприятно от такого "топорного" решения проблемы
8 авг 07, 13:31    [4496002]     Ответить | Цитировать Сообщить модератору
 Re: Cmd-файл для удаления файлов и запуск его в шедулере  [new]
MZH
Member

Откуда: Moscow
Сообщений: 3883
George-III
MZH
Можно, например, при помощи RAR упаковать все нужные файлы, а все остальные потереть нафиг, после чего упакованные восстановить обратно.

Делаю аналогично, но без архивирования - переносом файлов в другой каталог, удаления всего в папке и возвратом назад перемещённых файлов.
Проблема в том, что это выполняется очень медленно, что не устраивает, вот я и задал вопрос, можно ли делетить файлы, которые не соответсвуют некой маске!

Архивировать необязательно, достаточно указать RAR'у параметр -m0, тогда он не будет паковать файлы.
Насколько знаю, консольные команды move и copy не имеют параметров, позволяющих вытаскивать файлы сразу из всех подкаталогов, что RAR отлично умеет. А для delete не задается маска исключения.

George-III
Так и сделано, но создается несколько расписаний, проблема в феврале, я несколько однократных расписаний до 2010 года, соответсвенно по 28 и 29 числам, но это не очень удачно, так как потом на каждый следующий год надо дополнять ещё одним заданием...
Конечно надо ещё дожить до 2010, но всё же как-то неприятно от такого "топорного" решения проблемы

Собственно, что именно надо-чтобы работало или чтобы было эстетично и элегантно?
Можно вообще написать один скрипт на WSH, который запускается каждый день, проверяет, не последний ли это день в месяце, после чего производит желаемые действия.
А можно в батнике наколбасить многострочную процедуру для определения того же.
Вопрос лишь в уровне энтузиазма.
8 авг 07, 13:41    [4496099]     Ответить | Цитировать Сообщить модератору
 Re: Cmd-файл для удаления файлов и запуск его в шедулере  [new]
George-III
Member

Откуда:
Сообщений: 3689
MZH
Насколько знаю, консольные команды move и copy не имеют параметров, позволяющих вытаскивать файлы сразу из всех подкаталогов, что RAR отлично умеет.

Спасибо, но в этом нет необходимости для меня, подкаталоги отсутствуют
Проверю, если процедура без сжатия занимает меньше времени чем копирование, воспользуюсь Вашим советом, спасибо ещё раз
MZH
А для delete не задается маска исключения.

Понял, спасибо... Вариант отпадает!
MZH

Собственно, что именно надо-чтобы работало или чтобы было эстетично и элегантно?

Просто думал, что по незнанию нагородил огород, думал можно как-то проще!
MZH

А можно в батнике наколбасить многострочную процедуру для определения того же.

[/quot]
Если не затруднит, можно примерчик?Или ссылку на похожие варианты, подойдет любой вариант, переделаю под себя!
8 авг 07, 13:50    [4496184]     Ответить | Цитировать Сообщить модератору
 Re: Cmd-файл для удаления файлов и запуск его в шедулере  [new]
MZH
Member

Откуда: Moscow
Сообщений: 3883
George-III
Если не затруднит, можно примерчик?Или ссылку на похожие варианты, подойдет любой вариант, переделаю под себя!

Не буду даже пытаться-слишком долго думать над структурой вычисления придется :)
Кстати, в качестве "упрощенного" варианта могу предложить следующее.
Создать в шедулере задание, запускающееся в произвольный день ежемесячно
Создать второе задание, которое запускается ежемесячно первого числа. В скрипте запустить через schtasks изменение дня запуска первого задания на 31-ое число текущего месяца. После этого проверить ERRORLEVEL и, если он ненулевой, попытаться изменить дату на 30, дальше при ненулевом ERRORLEVEL'e попробовать 29-ое и 28-ое.
IMHO, это будет гораздо проще, чем вычислять последний день месяца и позволит ограничиться всего двумя заданиями.
8 авг 07, 14:02    [4496285]     Ответить | Цитировать Сообщить модератору
 Re: Cmd-файл для удаления файлов и запуск его в шедулере  [new]
MZH
Member

Откуда: Moscow
Сообщений: 3883
Поправка-изменяемое задание лучше поставить на однократное исполнение и ежемесячно корректировать его дату на последний день текущего месяца.
8 авг 07, 14:06    [4496327]     Ответить | Цитировать Сообщить модератору
 Re: Cmd-файл для удаления файлов и запуск его в шедулере  [new]
Biz©
Member

Откуда: Snezhinsk
Сообщений: 5687
может проще запускать задание в 23:59, сохранять дату, а через пару минут проверять не изменился ли месяц ? время начала задания соответствует условию, время окончания - не оговорено ;)
9 авг 07, 06:53    [4499840]     Ответить | Цитировать Сообщить модератору
 Re: Cmd-файл для удаления файлов и запуск его в шедулере  [new]
sanek842
Member

Откуда: Тюмень
Сообщений: 1433
MZH

...
Можно вообще написать один скрипт на WSH, который запускается каждый день, проверяет, не последний ли это день в месяце, после чего производит желаемые действия.
...


это пожалуй лучший вариант

var today   = new Date();
var lastday = new Date(today);

lastday.setDate(1);
lastday.setMonth(lastday.getMonth()+1);
lastday.setDate(lastday.getDate()-1);

// WScript.StdOut.WriteLine(today.toString() + '\n' + lastday.toString());

if ( today.getDate()==lastday.getDate() ) 
{
   var fso, f, fc;  
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder("C:\\test");
   fc = new Enumerator(f.files);
   for (; !fc.atEnd(); fc.moveNext())
    if (!( fc.item().Name == "filename1.txt" ||
           fc.item().Name == "filename2.txt"   ))
   {
      // WScript.StdOut.WriteLine(fc.item());
      fc.item().Delete();
   }  
}
9 авг 07, 07:53    [4499890]     Ответить | Цитировать Сообщить модератору
Все форумы / Windows Ответить