|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Графическая оболочка для CMD (индикатор состояния) |
|
CMD/BAT - [решено] Графическая оболочка для CMD (индикатор состояния)
|
Пользователь Сообщения: 55 |
Профиль | Отправить PM | Цитировать Подскажите, возможно ли сделать графический индикатор состояния CMD т.е. что бы отображал процент выполнения установки (именно в графическом виде)???
|
|
Отправлено: 11:52, 14-07-2009 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Меня удивила именно сама форма записи, выглядит как перенаправление потока от комманды к команде, но не содержит обязательного разделителя "|".
Вобщем увидел такое впервые. С остальным все понятно и так (/? пользоваться умеем) |
Отправлено: 19:26, 16-07-2009 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Цитата semiono:
...пришлось повозиться со спецсимволами - в предпоследней строке значок [^] очень нужен!!! и еще, символов "забой" в StatusText должно быть не меньше чем симвлов самого текста, так что можно заготовить 79-символьную строку из символов #8 и тогда StatusText можно менять динамически, незабывая выравнивать ее пробелами на 79-символьную границу... а вообще эти приколы не позволяют параллельно осуществлять полноценный вывод инфы на экран (его конечно можно эмулировать через буфер и команду CLS, но сие есть "извращения"), а вот игра с названием окна - вещь сильная! Заодно вопрос - есть встроенные средства получать управление не вводом целой строки (как set /P) а по одному символу? @Echo off SetLocal EnableExtensions SetLocal EnableDelayedExpansion set StagePos=1 set StageLen=4 set CurStages="-\|/" set StatusText=QWERTYUIOPing... :loop call :CurRotate rem do Something useful... Goto loop Exit :CurRotate set Cur=!CurStages:~%StagePos%,1! if %StagePos%==%StageLen% (set StagePos=1) else (set /a StagePos+=1) set /p None=%StatusText%^%Cur%<nul Exit /b |
|
Отправлено: 20:17, 16-07-2009 | #22 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата semiono:
@Echo Off Echo Курсор врашается For /L %%a In (1,1,10) Do ( For %%I In (^| / - \) Do ( Set /p X=%%I<Nul Call :Wait ) ) Echo. Echo Курсор остановлен Pause>nul Exit :Wait rem Здесь варианты задержки для изменения скорости вращения For /L %%a In (1,1,10000) Do Set a=1 rem nircmdc wait 100 rem Ping -n 1 localhost>Nul GoTo :EOF |
|
Отправлено: 20:25, 16-07-2009 | #23 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Цитата gora:
:Timer set ExitCode=0 set CTime=%Time:,=% set CTime=%CTime::=% if "%Timer%"=="" set /A Timer=%CTime%+%1 if /I %Timer% GEQ 24000000 set /a %CTime%+=24000000 if /I %Timer% LEQ %CTime% ( set ExitCode=1 set /a Timer+=%1 if /I %Timer% GEQ 24000000 set /a %Timer%-=24000000 ) exit /b %ExitCode% а проверять, прошло ли нужное время, через переменную %ErrorLevel% - ноль означает, что время еще не наступило и можно пока еще что-нить сделать полезное. т.е. этот таймер без ожидания! ... что-то наколбасил тут, вобщем перед использованием смотрим пример: На экран будет выводится следующее пороговое значение таймера ТОЛЬКО когда таймер срабатывает! Пример использования: @Echo off SetLocal EnableExtensions :loop call :Timer 20 if ErrorLevel 1 Echo %Timer% Goto loop :Timer set ExitCode=0 set CTime=%Time:,=% set CTime=%CTime::=% if "%Timer%"=="" set /A Timer=%CTime%+%1 if /I %Timer% GEQ 24000000 set /a %CTime%+=24000000 if /I %Timer% LEQ %CTime% ( set ExitCode=1 set /a Timer+=%1 if /I %Timer% GEQ 24000000 set /a %Timer%-=24000000 ) exit /b %ExitCode% |
|
Отправлено: 21:54, 16-07-2009 | #24 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата NiOl:
Оказалось, что нарисовать индикатор прогресса проще, нежели найти, где он действительно нужен в пакетных файлах. |
|
Отправлено: 23:23, 16-07-2009 | #25 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Iska:
кста, был еще пример применения: http://forum.oszone.net/thread-137412.html |
|
Отправлено: 05:41, 17-07-2009 | #26 |
Ветеран Сообщения: 830
|
Профиль | Отправить PM | Цитировать Я в восторге! Невероятно!
Одно замечание или пожелание, хочеться чтобы не просто крутился а двигался по строке >...../ Но тут всякие фантазии могут быть и вариации. Я бы представил это как хм... постепенное заполнение строки текстом и в конце строки всегда крутящийся курсор! Признаюсь, я видел это в Gentoo загрузочном диске, и это было очень красиво, так меня и не оставило желание, такое повторить но не под башем. Там как это обычно бывает выводились команды загрузки всяких устройств плавным разворачиванием строк, закрывающихся крутилкой, как бы она рисует эти строки. Если не влом подумайте ещё, хоть и безделица но блин таг приятно! Причём это ещё раз доказывает, что CMD не уступает скриптам под баш. Ещё офтоп, подскажите, можно ли буффер обмена использовать в коммандах типа @echo или > и >> Я имею ввиду, то что в виндоус в GUI делаем когда Select All / Copy и потом это вставить через "%1" какнибудь? Или может как-то иначе? |
------- Отправлено: 19:21, 17-07-2009 | #27 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать semiono, так пойдет?
@Echo Off Setlocal EnableDelayedExpansion Rem Длина строки Set len=45 Rem Строка Set string="Демонстрация ползущего и вращающегося курсора" For /L %%a In (1,1,%len%) Do ( For %%I In (^| / - \) Do ( Set /p X=%%I<Nul Call :Wait ) Set /p X=!string:~%%a,1!<Nul ) Echo. Echo Курсор остановлен Pause>nul Exit :Wait rem Здесь варианты задержки для изменения скорости вращения For /L %%a In (1,1,3000) Do Set a=1 rem nircmdc wait 100 rem Ping -n 1 localhost>Nul GoTo :EOF |
Последний раз редактировалось gora, 17-07-2009 в 20:10. Причина: добавил вложение Отправлено: 19:43, 17-07-2009 | #28 |
Ветеран Сообщения: 830
|
Профиль | Отправить PM | Цитировать нецензурщина Кстати, вопрос, а что делать когда квадраты из форума копируешь? Адекватно ли это вставиться в блокнот? И почему у меня интересно кодировка гонит, я вообще думал у моей виндоус (WinXP SP2 Eng) проблем нету? 1251 =c_1251.nls 1252 =c_1251.nls - тут ли это? |
------- Отправлено: 19:56, 17-07-2009 | #29 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата semiono:
|
|
Отправлено: 20:00, 17-07-2009 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
FreeBSD - Графическая оболочка на FreeBSD | clin | Общий по FreeBSD | 17 | 26-08-2014 10:15 | |
[решено] При запуске винды пропадает графическая оболочка виндовз | QUMATOZ | Лечение систем от вредоносных программ | 23 | 07-10-2008 14:06 | |
Debian/Ubuntu - графическая оболочка для убунту | Sirko9 | Общий по Linux | 3 | 27-03-2008 14:28 | |
Графическая оболочка Windows XP | Guest | Хочу все знать | 6 | 16-07-2003 22:15 | |
Графическая оболочка для MPlayer | Romul8 | Программное обеспечение Linux и FreeBSD | 18 | 27-12-2002 20:11 |
|