Войти

Показать полную графическую версию : Консольные утилитки для .bat .cmd


Опиум
04-12-2013, 17:23
Здесь буду выкладывать утилитки, некоторым из которых 10 лет в обед. Писаны были для использования в батниках.

Начну с любимой)
BEFORE.EXE starttime [endtime] [nowait] - приостановить выполнение командного файла до времени starttime, заданного в формате HH:mm

Примеры
BEFORE.EXE 20:00 -подождать до 20:00 и продолжить. Если к моменту исполнения команды на часах 20:01, то будет ждать до 20:00 следующего дня.
BEFORE.EXE 20:00 23:00 -подождать до 20:00 и продолжить. Если к моменту исполнения команды на часах от 20:00 до 23:00 то ждать не будет. Вернет errorlevel=0 - количество часов которые ждала программа.
BEFORE.EXE 20:00 nowait - не ждать, но вернуть errorlevel=h - количество часов которые бы ждала программа до 20:00
BEFORE.EXE 20:00 23:00 nowait - не ждать, но вернуть errorlevel=h - количество часов которые бы ждала программа до 20:00. Если текущее время от 20:00 до 23:00 то errorlevel=0

В выходную строку отправляет количество секунд которые будет (стала бы) ждать и errorlevel
d:\>time /t
17:22

d:\>before 20:00 nowait
9440
BEFORE Errorlevel:2

d:\>


Например, нужен рестарт сервера после бекапа, но неизвестно когда он завершится, если в рабочее время, то не рестартовать.

before 0:00 7:00 nowait && shutdown /r

Опиум
05-12-2013, 17:58
INKEYS.EXE [[string1] prompt_string] - получает ascii код нажатой клавиши и возвращает его в качестве errorlevel.

если string1 число, то ждет нажатие соответствующее количество секунд

Примеры
d:\>inkeys test - не ждет, вычитывает нажатую кнопку.
0

d:\>inkeys 5 "Press ESC to abort" - ждет 5 секунд... я ничего не нажимал. вернулся errorlevel=0
Press ESC to abort [Wait:5 sec]
0

d:\>inkeys 5 "Press ESC to abort" - нажал esc. вернулся errorlevel=27
Press ESC to abort [Wait:5 sec]
27

d:\>


использую например в батниках, запускаемых по шедулеру. если запускатся сам - так и ладно, а если я его толкаю ручками - то имею возможность менять логику в местах где ставляю inkeys.exe

Iska
06-12-2013, 05:42
Опиум, это чем-то отличается от choice.exe?!

Опиум
06-12-2013, 09:47
меня както напрягло несколько раз, что опции командной строки choice в разных виндах несовместимы.
решил сбацать инструмент для своего kit-а

Iska
06-12-2013, 13:23
Как раз совместимы. Как и обычно — снизу вверх.

Опиум
06-12-2013, 13:42
ога. снизу вверх.
вот например ХП
d:\>ver

Microsoft Windows XP [Version 5.1.2600]

d:\>choice /ty,5
[Y,N]?Y

d:\>

и запусти это же под w7...

Iska
06-12-2013, 14:01
Опиум, был неправ. Синтаксис отличается. Следует проводить проверку версии и вызывать свой вариант синтаксиса для каждой ОС.

Опиум
20-12-2013, 18:31
Выводит текущее дату-время с секундами и миллисекундами
D:\>datetimemsec
20131220174820287

D:\>datetimemsec ;
2013;12;20;17;48;26;078

D:\>datetimemsec -
2013-12-20-17-48-29-214


Для замера длительности процесса использую:

D:\>timemer
timemer.exe string start|stop|view

D:\>timemer my_backup start #инициализирует и запускает секундомер под названием "my_backup"
254
20.12.2013 17:51:42 my_backup start

#подождал 12 секунд и набираю

D:\>timemer my_backup view #показывает сколько прошло времени с момента сброса или инициализации.
0
0 00:00:12 my_backup view

#еще чуток подождал...

D:\>timemer my_backup stop #перезапускает секундомер "my_backup"
0
0 00:00:24 my_backup stop

#подождал 5 секунд и набираю

D:\>timemer my_backup view
0
0 00:00:05 my_backup view

D:\>

возвращает errorlevel=интервал в часах. и длительность в DD HH:MM:SS
в работе использует файл timemer.ini, расположенный вместе с экзешником.

semcrm
24-12-2013, 12:05
Моя любимая : HS_packet ! Она замечательна. В ней находятся:
beep ; color* ; delay ; echo* ; exec ; help ; message ; play ; pos ; readkey ; window.
* НЕ СТАНДАРТНЫЕ.




© OSzone.net 2001-2012