Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   изменение программы waiter.exe (http://forum.oszone.net/showthread.php?t=197372)

TheFox 23-01-2011 02:47 1595101

изменение программы waiter.exe
 
Вложений: 1
Есть очень полезная программка, которую я использую в батнике, называется WAITER.exe. Она делает паузу в батнике, отсчитывает указанное количество секунд и завершается, выполнение батника продолжается. Причем тип завершение влияет на errorlevel. Если дождаться завершения отсчета или нажать ctrl+a, errorlevel 0, если нажать любую другую клавишу, то errorlevel 1. Возможно ли каким-то образом влезть в тело exe'шника и поменять так, чтобы errorlevel был 0 при завершении отсчета и при нажатии любой клавиши, а нажатие ctrl+a давало errorlevel 1?

Вот выдержка из описания, идущего с прогой:

DESCRIPTION
Waiter counts down for a default of five seconds, then terminates with ERRORLEVEL 0. If the user presses a key during countdown, waiter terminates with ERRORLEVEL 1.

A hidden feature allows the user to terminate with ERRORLEVEL 0 by pressing ctrl-A. This allows the impatient user to override the wait, but take the default action.
PARAMETERS

waiter [-q -s seconds] msgline1 msgline2....

заранее благодарен.

Busla 23-01-2011 13:34 1595329

Проще написать заново этот waiter
А в чём состоит более общая задача?

TheFox 23-01-2011 15:02 1595403

задача довольно-таки простая - запущенная в теле батника с параметром секунд, программа отсчитывает указанное число секунд, после чего завершается и выполнение батника продолжается. Но самая главная для меня функция - возможность завершить отсчет до истечения таймера со следующими условиями:
нажатие какого-то сочетания клавиш (ctrl+a например) результирует в errorlevel 1, а нажатие любой клавиши - errorlevel 0. Окончание отсчета так же результирует в errorlevel 0.

подскажи, чем можно текст программы посмотреть, возможно, сам что-то смогу, да и на будущее пригодится.

Был бы очень признателен за помощь!

amel27 24-01-2011 06:52 1595874

Цитата:

Цитата TheFox
нажатие какого-то сочетания клавиш (ctrl+a например) результирует в errorlevel 1, а нажатие любой клавиши - errorlevel 0. Окончание отсчета так же результирует в errorlevel 0 »

если вывод на консоль оставшегося времени не важен (в постановке задачи отсутствует), то можно преобразовать исходную таблицу истинности одной строчкой батника (выделено цветом):
Код:

@echo off
(waiter -s 10 2>nul||echo #)|findstr/irc:"Waiting: *0" /c:"#">nul

echo ERRORLEVEL:%ERRORLEVEL%
pause>nul


TheFox 27-01-2011 12:17 1598280

выполнение такого кода во всех вариантах (дождаться окончания счетчика, нажатия эникея, сочетание контрол+а) дает результат errorlevel 1. В чем смысл не понял :(

amel27 27-01-2011 14:48 1598415

TheFox, у меня на XP вроде нормально работает... а смысл - уберите в конце ">nul", тогда перед ERRORLEVEL:0 должно быть выведено для окончания счетчика "Waiting: 0", для эникея что-то типа "# iting: 9", для Ctrl+A перед ERRORLEVEL:1 должно быть пусто

TheFox 27-01-2011 19:45 1598630

не очень пока въехал, но попробую поиграться, спасибо...

TheFox 30-01-2011 18:09 1600558

Вложений: 1
На другом форуме помогли с редактированием файла. Так что выкладываю, может кому пригодится.
errorlevel'ы такие:
ctrl+a - 1
anykey - 0
wait - 0

с findstr пока не попробовал, времени нет. Но обязательно попробую и отпишусь...


Время: 03:40.

Время: 03:40.
© OSzone.net 2001-