Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проблема с командой FIND

Ответить
Настройки темы
CMD/BAT - [решено] Проблема с командой FIND

Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: angel_lyucifer
Дата: 13-03-2016
Изображения
Тип файла: jpg Безымянный.jpg
(263.9 Kb, 19 просмотров)
Всем привет, пишу программу Говорящие часы но возникла проблема с командой FIND. Батник мой записывает в файл данное время а затем команда FIND многократно в цикле проверяет указное значение и если есть совпадения тогда запускается соответствующий времени звуковой скрипт. С 0:00 до 10:00 FIND работает нормально но с 10:00 до 23:00 уже работает не корректно искомая строка одну цифру как будто съедает в результате проверки значение неверное и в целом программа работает неправильно.

Пример
Код: Выделить весь код
:every-15_minutes
Echo.%TIME:~0,-6%>m.txt
FIND "21:45" "m.txt"
if %ERRORLEVEL% == 0 (
start /w wscript.exe "sound\21ch-45_minutes.VBS"
start /w wscript.exe "TIMEOUT-60.VBS"
goto every-15_minutes) else (goto 2200)
:2200
FIND "22:00" "m.txt"
if %ERRORLEVEL% == 0 (
tart /w wscript.exe "sound\22ch.VBS"
start /w wscript.exe "TIMEOUT-60.VBS"
goto every-15_minutes) else (goto 2215)
:2215
start /w wscript.exe "Sleep.VBS"
FIND "22:15" "m.txt"
if %ERRORLEVEL% == 0 (
start /w wscript.exe "sound\22ch-15_minutes.VBS"
start /w wscript.exe "TIMEOUT-60.VBS"
goto every-15_minutes) else (goto 2230)
:2230
start /w wscript.exe "Sleep.VBS"
и т. д.
Вот рисунок с ошибкой.
http://forum.oszone.net/attachment.p...1&d=1457826426
Уже неделю бьюсь над этой проблемой....
Помогите пожалуйста исправить эту ошибку?

-------
Век живи, век учись! =)


Отправлено: 02:35, 13-03-2016

 

Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


find работает правильно -- ищет "2:00" и находит в строке "22:00".

используйте findstr
Код: Выделить весь код
findstr "\<2:00" m.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:11, 13-03-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
find работает правильно -- ищет "2:00" и находит в строке "22:00". »
Я вас не понял....

-------
Век живи, век учись! =)


Отправлено: 05:13, 13-03-2016 | #3


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


А чего непонятного? 22:00

Отправлено: 05:21, 13-03-2016 | #4


Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
А чего непонятного? 22:00 »
Ладно... Но почему одна цифра съедается?

-------
Век живи, век учись! =)


Отправлено: 16:57, 13-03-2016 | #5


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата angel_lyucifer:
Но почему одна цифра съедается? »
Исходя из вашего скриншота ничего не съедается, Идет переход с 1:15 до 2:00 c шагом в 15 минут, при этом find ищет в файле m.txt соответствующую строку -- "1:15", "1:30", "1:45" и "2:00". Поскольку в файле есть строка "22:00", то она полностью удовлетворяет условию поиска "2:00". Find не умеет искать с помощью дополнительных условий, т.е. находит любое соответствие.

Отправлено: 17:23, 13-03-2016 | #6


Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
findstr "\<2:00" m.txt »
Ясно спасибо но ваш вариант все равно не сработал.

Еще будут идеи?

-------
Век живи, век учись! =)


Отправлено: 17:58, 13-03-2016 | #7


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


angel_lyucifer, Реальное время 2 часа ночи, а файле config.txt десять вечера. Я правильно понимаю? По другому не должно быть. У вас случайно не перепутано системное время (в config.txt, может туда пишется вместо дня ночь? Или другой часовой пояс.)

Отправлено: 18:21, 13-03-2016 | #8


Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Реальное время 2 часа ночи, а файле config.txt десять вечера. »
В файле config.txt пишется пятизначное значение то есть 22:00 но искомая строка видит как четырехзначное то есть 2:00.

Примеры:
Пишет в файле config.txt
17:15 findstr или find видит как 7:15
11:00 findstr или find видит как 1:00
23:30 findstr или find видит как 3:30
10:00 findstr или find видит как 0:00
14:45 findstr или find видит как 4:45
20:00 findstr или find видит как 0:00
13:30 findstr или find видит как 3:30
и т. д.

-------
Век живи, век учись! =)


Отправлено: 20:48, 13-03-2016 | #9


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата angel_lyucifer:
17:15 findstr или find видит как 7:15 »
Я не знаю, как у вас это получается

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:06, 13-03-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проблема с командой FIND

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Проблема с командой taskkill potopbl4@vk Microsoft Windows 7 17 10-04-2015 17:03
Интернет - [решено] проблема с командой arp -s Dosmod Microsoft Windows 7 1 07-10-2011 20:19
Доступ - проблема с командой cipher iamgdv Microsoft Windows 2000/XP 0 07-10-2010 15:27
проблема с 'find' (скрипт на shell) romez777 Программирование в *nix 1 20-02-2007 13:12
[решено] Проблема с командой net send Animal Microsoft Windows NT/2000/2003 30 19-09-2004 18:38




 
Переход