Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Не работает батчик

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Windows
Предыдущая тема :: Следующая тема  
Автор Сообщение
Alll



Зарегистрирован: 29.03.2005
Сообщения: 9

СообщениеДобавлено: Чт Апр 07 2005 08:15    Заголовок сообщения: Не работает батчик Ответить с цитатой

В файл data.txt записывается дата последнего исполнения
все вроде нормально но в строке 2 никогда не бывает истина. Смотрел что в переменных вроде одно и тоже. но вот не хочет он сравнивать системную дату и дату взятую из файла. Всегда исполняется строка 3. Может тут дело с преобразованием типов. Но не знаю как преобразоввать Подскажите.

1. FOR /F %%i in (data.txt) do set f=%%i

2. if "%%f" == "%date%" echo file is runing today
3. if not "%%f" == "%date%" goto work

4. goto end

5. :work
6. echo work
7. date /t > data.txt

8. :end
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
4u3u



Зарегистрирован: 24.01.2003
Сообщения: 997
Откуда: Moscow

СообщениеДобавлено: Чт Апр 07 2005 11:12    Заголовок сообщения: Ответить с цитатой

Тут ошибка на ошибке :)

1. По умолчанию for /f присваивает переменной часть строки до первого пробела, так что если дата Thu 04/07/2005, то переменной f будет присвоено значение Thu что естественно не равно значению переменной %date%. Чтобы в переменную попадала вся строка, нужно добавить параметр "delims=", отключающий разделители между элементами строки.
2. Чтобы подставлять значение переменной f в конструкцию IF, нужно использовать синтаксис %f%, а не %%f
3. Не во всех ОС, насколько я помню, вывод date /t и содержимое %date% одинаково. Но даже если я ошибаюсь, принципиально лучше сравнивать данные из одного источника, так что строку 7 я бы заменил на echo %date%>data.txt
А если ">" заменить на ">>", то в файле будут храниться все даты запуска, что полезно для отслеживания работы скрипта. При этом команда FOR в первой строке будет всегда присваивать переменой f значение последней записи в файле, так что логика скрипта не пострадает. Обрати внимание, что я убрал пробелы, потому что иначе они тоже попадают в строку, и в этом случае первый IF никогда не выдаст True.
4. Просто замечание - в указателе :end нет необходимости, потому как существует указатель :eof, всегда показывающий на конец файла. Так что можно в строке 4 написать goto :eof и убрать лейбл в конце батника.

Как бы я написал:
Код:
@echo off
FOR /F "delims=" %%i in (data.txt) do set f=%%i

if not "%f%" == "%date%" (
    echo work
    echo %date%>>data.txt
    goto :eof
)
echo file is runing today
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Windows Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...