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. Опять-таки, не всё нормально в синтаксисе, надо доработать рашпилем :)
hasherfrog
Thnks.
Вечером доберусь до той машины - попробую и отпишу
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.