PDA

Показать полную графическую версию : [решено] Графическая оболочка для CMD (индикатор состояния)


Страниц : [1] 2 3

ofcoss
14-07-2009, 11:52
Подскажите, возможно ли сделать графический индикатор состояния CMD т.е. что бы отображал процент выполнения установки (именно в графическом виде)???

Shanser
14-07-2009, 12:22
Подскажите, возможно ли сделать графический индикатор состояния CMD т.е. что бы отображал процент выполнения установки (именно в графическом виде)??? »
Никогда такого не встречал, однако посмотри тут (http://forum.oszone.ru/post-1160233-3481.html), может автор сего творения тебе что-то подскажет.
Нормальный прогресс бар прикрутить к СМД ИМХО нельзя!!!

ofcoss
15-07-2009, 00:22
А начем написан WPI там разве не cmd команды используються

Shanser
15-07-2009, 08:00
А начем написан WPI там разве не cmd команды используються »
WPI написан не на СМД!!!

gora
16-07-2009, 09:21
посмотри тут, может автор сего творения тебе что-то подскажет »
Автор идеи не я, а amel27. Я лишь слегка доработал ее под свои нужды. :)
Вот тестовый вариант псевдографического прогрессбара в *.bat файле :@Echo Off
Setlocal EnableDelayedExpansion

rem Число символов в прогрессбаре
Set N_Col=79
rem Число иттераций (файлов в моем случае) на 100%
Set cntA=274

rem -----------------------------
Set cnt=0
Echo Обработка запущена
:loop
Call :Work
Call :Bar Обработано
If Not %cnt%==%cntA% GoTo :loop
rem -----------------------------
Echo.
Echo Обработка завершена
Pause>nul
Exit

:Bar
If %cnt%==0 (
For /L %%a In (1,1,%N_Col%) Do Set Line0=!Line0!░
For /L %%a In (1,1,%N_Col%) Do Set Line0=!Line0!
<Nul Set /p X=!Line0!
)
Set /a Inc=((%cnt%+1)*%N_Col%)/%cntA%-(%cnt%*%N_Col%)/%cntA%
If %Inc% GTR 0 For /L %%a In (1,1,%Inc%) Do <Nul Set /p X=█
Set /a cnt+=1
Set /a prsnt=cnt*100/cntA
Title %1 %prsnt%%% файлов: %cnt% из %cntA%
GoTo :EOF

:Work
rem Здесь собственно рабочая процедура

GoTo :EOF

ofcoss
16-07-2009, 11:46
хмм после раздела work за словом rem вставляю свою команду и ничего не происходит, че не так делаю?
@Echo Off
Setlocal EnableDelayedExpansion

rem Число символов в прогрессбаре
Set N_Col=79
rem Число иттераций (файлов в моем случае) на 100%
Set cntA=274

rem -----------------------------
Set cnt=0
Echo Обработка запущена
:loop
Call :Work
Call :Bar Обработано
If Not %cnt%==%cntA% GoTo :loop
rem -----------------------------
Echo.
Echo Обработка завершена
Pause>nul
Exit

:Bar
If %cnt%==0 (
For /L %%a In (1,1,%N_Col%) Do Set Line0=!Line0!░
For /L %%a In (1,1,%N_Col%) Do Set Line0=!Line0!
<Nul Set /p X=!Line0!
)
Set /a Inc=((%cnt%+1)*%N_Col%)/%cntA%-(%cnt%*%N_Col%)/%cntA%
If %Inc% GTR 0 For /L %%a In (1,1,%Inc%) Do <Nul Set /p X=█
Set /a cnt+=1
Set /a prsnt=cnt*100/cntA
Title %1 %prsnt%%% файлов: %cnt% из %cntA%
GoTo :EOF

:Work
rem setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-

GoTo :EOF

gora
16-07-2009, 12:20
за словом rem вставляю свою команду и ничего не происходит »
Удалите rem и ваша команда будет выполняться, но видимо Вы не поняли работу этого скрипта. В таком виде он выполнить команду setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- 274 раза. В ходе же работы самого setup.exe прогресс бар будет неподвижен, а будет продвигаться только после каждого (или нескольких) запуска этого файла setup.exe.

mamont1
16-07-2009, 12:26
А так красивше
@Echo Off
MODE CON COLS=80 LINES=5
color 1e
Setlocal EnableDelayedExpansion
дальше по тексту
http://img1.immage.de/1607f402fa.gif (http://immage.de/)

batyaPS
16-07-2009, 12:26
ofcoss,

после "rem" ставится как правило описание или помощь или что угодно

смысл - после команды rem не чего обрабатываться не будет (или просто игнорироваться )

тебе надо так

:Work
rem тут можно писать что угодно !!!!! не как не влияет на работу скрипта.

setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-

GoTo :EOF

@Echo Off MODE CON COLS=80 LINES=5 color 1e Setlocal EnableDelayedExpansion »


у меня почему то полоски не появилось . только вывод работы cmd

batyaPS
16-07-2009, 12:46
For /L %%a In (1,1,%N_Col%) Do Set Line0=!Line0!░
For /L %%a In (1,1,%N_Col%) Do Set Line0=!Line0!
<Nul Set /p X=!Line0!
)
Set /a Inc=((%cnt%+1)*%N_Col%)/%cntA%-(%cnt%*%N_Col%)/%cntA%
If %Inc% GTR 0 For /L %%a In (1,1,%Inc%) Do <Nul Set /p X=█ »


какие символы здесь утерялись ?

amel27
16-07-2009, 13:29
2ALL
мне удавалось постить спецсимволы в [CODE] только в расширенном режиме, причем только сходу без предпросмотра, иначе они все затираются движком форума - проще файлом прицепить

gora
16-07-2009, 13:37
мне удавалось запостить спецсимволы в [code] только в расширенном режиме, причем без предпросмотра, иначе они все затираются движком форума »
Сейчас скопировал из своего поста текст, вставил в редактор (EmEditor) и сохранил в DOS кодировке. Все спец. символы прекрасно сохранились и все отработало "на ура". :)
Но все же файл прикреплю, если у кого проблемы с копированием из форума.

batyaPS
16-07-2009, 14:51
при запуске файла от gora получаю =>

http://img199.imageshack.us/img199/2313/34965985.jpg

т.е. нет красивой полоски как должно быть .


а это я вижу на форуме =>

http://img522.imageshack.us/img522/8332/35745255.jpg

не все символы определяются как положено . использую Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5
та же картина при просмотре форума в IE8

а это при открытии файла от gora в блокноте
http://img441.imageshack.us/img441/7956/82228445.jpg


как мне видеть и редактировать русские символы в файле gora ?
что сделать , что б я видел спец символы на форуме ?
и почему нет той самой красивой строки прогресс бара ?

gora
16-07-2009, 14:55
batyaPS, уберите или закомментируйте строку в моем файле (осталась от тестов)nircmdc wait 1

как мне видеть и редактировать русские символы »
Блокнот не поддерживает DOS кодировку, используйте альтернативный текстовый редактор (у меня EmEditor).

batyaPS
16-07-2009, 15:17
batyaPS, уберите или закомментируйте строку в моем файле (осталась от тестов)
Код:
nircmdc wait 1 »

да это мне понятно .

почему нет полоски ? вот что не понятно

gora
16-07-2009, 15:29
batyaPS, заменил вложение в посте 13. Скачайте, распакуйте и запустите не редактируя.

batyaPS
16-07-2009, 15:53
gora, да , работает . за EmEditor тоже спасибо

так ......собственно, если у меня есть bat ник (в нем много чего , не суть, но явно не одна команда )
можно ли к нему прикрутить этот самый progress bar ?

NiOl
16-07-2009, 16:24
Прошу объяснить механизм работы сего чуда:

<Nul Set /p X=!Line0! »

Хотя, кажется разобрался - пустая команда получает ввод из NUL и передает это команде Set с запросом... только тогда разделителя не хватает...

gora
16-07-2009, 17:52
NiOl, с такой формой записи Вы конечно знакомы:Echo test_text>test.txt Менее распространенная, но аналогичная по действию>test.txt Echo test_text Если взглянуть на <Nul Set /p X=!Line0! под тем же углом, то можно записать более привычноSet /p X=!Line0!<Nul Ключ /p позволяет установить значение переменной (X) с выводом подсказки (!Line0!) и вводом из Nul.
Если я ошибаюсь, то пусть автор (amel27) меня поправит. :)

semiono
16-07-2009, 17:58
0_0 да вы тут чудеса творите! +1
а уменя всегда была мечта, хотяб как игрушку крутящийся курсор зделать, нельзя ли?
хотя я не знаю даже, ну хотяб sleep и потом выход? или может чтё полезное придумать?
# idebug \|/-\|/-.....




© OSzone.net 2001-2012