PDA

Показать полную графическую версию : Нужен BAT файл


Страниц : 1 [2]

hasherfrog
28-04-2004, 11:21
Lamo
Рискну предложить:
>  temp.bat echo @prompt set last_update=
>> temp.bat dir /b /o-n c:\обновления.*
  @call temp.bat > nul
  @del temp.bat
  for %%file in (c:\обновления.*) do if not %last_update == %%file del %%file
  set last_update=

Знаки >, >> не убирайте, они нужны. Не очень уверен в синтаксисе, впрочем. Под рукой нет 9х.

hasherfrog
05-05-2004, 13:23
Lamo
Так, чего-то не работает этот @prompt как ожидалось.
Сделаем по-другому:
1. Создаем файлик pre.cmd
2. Пишем там set last_update=
Внимание! Возврата каретки не должно быть! файл содержит строку, которая не кончается <eol>!
3. Собственно батник:

> dirlist.lst dir /b /o-n c:\обновления.*
 copy /b pre.cmd+dirlist.lst temp.bat
 @call temp.bat > nul
 for %%file in (c:\обновления.*) do if not %last_update == %%file del %%file
 set last_update=
 @del temp.bat
 @del dirlist.lst

Т.о. при работе батника список файлов будет слит с файлом pre.cmd в файл temp.bat. При выполнении temp.bat первая строка установит переменную last_update в имя самого последноего обновления. Остальные строки дадут кучу ошибок, но мы их сливаем в nul. Потом, зная последний last_update, стираем все другие файлы, а затем чистим за собой.
PS. Давая предыдущий пост, я считал, что использование @prompt не даст <eol> после echo, но это не так. Попробуйте данный вариант с pre.cmd, и плз, ответьте, получилось ли у Вас желаемое.
PPS. Опять-таки, не всё нормально в синтаксисе, надо доработать рашпилем :)

Lamo
05-05-2004, 14:12
hasherfrog
Thnks.
Вечером доберусь до той машины - попробую и отпишу




© OSzone.net 2001-2012