|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Графическая оболочка для CMD (индикатор состояния) |
|
CMD/BAT - [решено] Графическая оболочка для CMD (индикатор состояния)
|
Пользователь Сообщения: 55 |
Подскажите, возможно ли сделать графический индикатор состояния 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 |
Ветеран Сообщения: 842
|
Профиль | Отправить 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 |
Ветеран Сообщения: 842
|
Профиль | Отправить 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 |
|