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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Графическая оболочка для CMD (индикатор состояния) (http://forum.oszone.net/showthread.php?t=145074)

ofcoss 14-07-2009 11:52 1167189

Графическая оболочка для CMD (индикатор состояния)
 
Подскажите, возможно ли сделать графический индикатор состояния CMD т.е. что бы отображал процент выполнения установки (именно в графическом виде)???

Shanser 14-07-2009 12:22 1167217

Цитата:

Цитата ofcoss
Подскажите, возможно ли сделать графический индикатор состояния CMD т.е. что бы отображал процент выполнения установки (именно в графическом виде)??? »

Никогда такого не встречал, однако посмотри тут, может автор сего творения тебе что-то подскажет.
Нормальный прогресс бар прикрутить к СМД ИМХО нельзя!!!

ofcoss 15-07-2009 00:22 1167849

А начем написан WPI там разве не cmd команды используються

Shanser 15-07-2009 08:00 1167941

Цитата:

Цитата ofcoss
А начем написан WPI там разве не cmd команды используються »

WPI написан не на СМД!!!

gora 16-07-2009 09:21 1169058

Цитата:

Цитата Shanser
посмотри тут, может автор сего творения тебе что-то подскажет »

Автор идеи не я, а 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 1169237

хмм после раздела 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 1169265

Цитата:

Цитата ofcoss
за словом rem вставляю свою команду и ничего не происходит »

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

mamont1 16-07-2009 12:26 1169273

А так красивше
Код:

@Echo Off 
MODE CON COLS=80 LINES=5
color 1e
Setlocal EnableDelayedExpansion
дальше по тексту


batyaPS 16-07-2009 12:26 1169275

ofcoss,

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

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

тебе надо так

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

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

GoTo :EOF

Цитата:

Цитата mamont1
@Echo Off MODE CON COLS=80 LINES=5 color 1e Setlocal EnableDelayedExpansion »


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

batyaPS 16-07-2009 12:46 1169309

Цитата:

Цитата ofcoss
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 1169359

2ALL
мне удавалось постить спецсимволы в [code] только в расширенном режиме, причем только сходу без предпросмотра, иначе они все затираются движком форума - проще файлом прицепить

gora 16-07-2009 13:37 1169372

Вложений: 1
Цитата:

Цитата amel27
мне удавалось запостить спецсимволы в [code] только в расширенном режиме, причем без предпросмотра, иначе они все затираются движком форума »

Сейчас скопировал из своего поста текст, вставил в редактор (EmEditor) и сохранил в DOS кодировке. Все спец. символы прекрасно сохранились и все отработало "на ура". :)
Но все же файл прикреплю, если у кого проблемы с копированием из форума.

batyaPS 16-07-2009 14:51 1169420

при запуске файла от gora получаю =>



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


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



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

а это при открытии файла от gora в блокноте



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

gora 16-07-2009 14:55 1169424

batyaPS, уберите или закомментируйте строку в моем файле (осталась от тестов)
Код:

nircmdc wait 1
Цитата:

Цитата batyaPS
как мне видеть и редактировать русские символы »

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

batyaPS 16-07-2009 15:17 1169447

Цитата:

Цитата gora
batyaPS, уберите или закомментируйте строку в моем файле (осталась от тестов)
Код:
nircmdc wait 1 »

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

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

gora 16-07-2009 15:29 1169463

batyaPS, заменил вложение в посте 13. Скачайте, распакуйте и запустите не редактируя.

batyaPS 16-07-2009 15:53 1169490

gora, да , работает . за EmEditor тоже спасибо

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

NiOl 16-07-2009 16:24 1169528

Прошу объяснить механизм работы сего чуда:

Цитата:

Цитата gora
<Nul Set /p X=!Line0! »

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

gora 16-07-2009 17:52 1169642

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 1169649

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

NiOl 16-07-2009 19:26 1169709

Меня удивила именно сама форма записи, выглядит как перенаправление потока от комманды к команде, но не содержит обязательного разделителя "|".
Вобщем увидел такое впервые. С остальным все понятно и так (/? пользоваться умеем) ;)

NiOl 16-07-2009 20:17 1169745

Цитата:

Цитата semiono
а уменя всегда была мечта, хотяб как игрушку крутящийся курсор зделать, нельзя ли?
хотя я не знаю даже, ну хотяб sleep и потом выход? или может чтё полезное придумать?
# idebug \|/-\|/-..... »

...пользуясь нарисованным выше... ;)
...пришлось повозиться со спецсимволами - в предпоследней строке значок [^] очень нужен!!!
и еще, символов "забой" в 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


gora 16-07-2009 20:25 1169755

Цитата:

Цитата 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


NiOl 16-07-2009 21:54 1169846

Цитата:

Цитата gora
:Wait rem Здесь варианты задержки для изменения скорости вращения »

можно вызывать типовую процедуру таймера (В начало пакетного файла ОБЯЗАТЕЛЬНО включить код SetLocal EnableExtensions):

Код:

: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%

Вызывать так call :Timer XX, где XX - задержка в сотых долях секунды,
а проверять, прошло ли нужное время, через переменную %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%


Iska 16-07-2009 23:23 1169936

Цитата:

Цитата NiOl
… и можно пока еще что-нить сделать полезное.

Вот с этим-то как раз и проблема. Я около полугода назад, наткнувшись на пост коллеги amel27, возрадовался, пошёл от него танцевать («крутилки», наподобие выложенной выше, простые проценты, учёт ширины консоли и т.п.)… Всё было замечательно. Работало изумительно. До тех пор, пока, перед выкладыванием, не понадобилось снабдить код реальным примером, где сия функциональность будет не просто сбоку припёка, а, вот так, что называется, — до зарезу. И я ничего подходящего так и не смог найти. Ибо команды, утилиты и пакетные файлы практически не реализуют частичную функциональность, подобно языкам высокого уровня (если её не вводить искусственно; скажем, копируя не одной командой «copy a:\*.txt b:\*.*», а перебирая ручками в «for …»), наподобие VBScript'ового «For Each objFile In objFSO.GetFolder(…).Files». То есть, для визуального отображения куда как более потребна простая «крутилка» или не вычисленный, а простой «безлимитный» индикатор прогресса (т.е. просто отображающего, что процесс идёт) посредством той же вышеозвученной команды «<NUL SET /P strTemp=.».

Оказалось, что нарисовать индикатор прогресса проще, нежели найти, где он действительно нужен в пакетных файлах.

amel27 17-07-2009 05:41 1170115

Цитата:

Цитата Iska
нарисовать индикатор прогресса проще, нежели найти, где он действительно нужен в пакетных файлах »

не с той стороны подходите - не задачи надо под фичи искать, а наоборот... ;)
кста, был еще пример применения: http://forum.oszone.net/thread-137412.html

semiono 17-07-2009 19:21 1170808

Я в восторге! Невероятно! :)
Одно замечание или пожелание, хочеться чтобы не просто крутился а двигался по строке >...../
Но тут всякие фантазии могут быть и вариации. Я бы представил это как хм... постепенное заполнение
строки текстом и в конце строки всегда крутящийся курсор!
Признаюсь, я видел это в Gentoo загрузочном диске, и это было очень красиво, так меня и не оставило желание, такое повторить но не под башем.
Там как это обычно бывает выводились команды загрузки всяких устройств плавным разворачиванием строк,
закрывающихся крутилкой, как бы она рисует эти строки. :)
Если не влом подумайте ещё, хоть и безделица но блин таг приятно! Причём это ещё раз доказывает,
что CMD не уступает скриптам под баш.

Ещё офтоп, подскажите, можно ли буффер обмена использовать в коммандах типа @echo или > и >>
Я имею ввиду, то что в виндоус в GUI делаем когда Select All / Copy и потом это вставить через "%1" какнибудь? Или может как-то иначе?

gora 17-07-2009 19:43 1170823

Вложений: 1
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


semiono 17-07-2009 19:56 1170831


нецензурщина :)

Кстати, вопрос, а что делать когда квадраты из форума копируешь? Адекватно ли это вставиться в блокнот? И почему у меня интересно кодировка гонит,
я вообще думал у моей виндоус (WinXP SP2 Eng) проблем нету?
1251 =c_1251.nls 1252 =c_1251.nls - тут ли это?

gora 17-07-2009 20:00 1170834

Цитата:

Цитата semiono
Адекватно ли это вставиться в блокнот? »

Нет. Блокнот не поддерживает DOS кодировку. Уже писал про это, прочтите предыдущую страницу.

semiono 17-07-2009 20:06 1170838

У меня akelpad, просто я наверное не контролирую, вернее не знаю,
надо чтоли дос пустой документ создать и тогда вставить? (а в хтмл это под дос чтоли кодировка тут? )
вообще копируется правильно чтоль, просто не отображается?
offtop: у меня наоборот было, зделал я себе chm с помощью конвертера и круто получилось,
хотя кому это другим давал у всех козяблики там 0_0 а у меня нормально!
---
gora, спасибо за скрипт, это просто праздник! крута!

batyaPS 17-07-2009 20:07 1170841

gora, еще раз можно #29 в файле выложить . даже на работе не вижу всех символов .

gora 17-07-2009 20:12 1170848

semiono, akelpad не использую, не знаю...
batyaPS, прикрепил к посту 29.

semiono 17-07-2009 20:16 1170850

Цитата:

Цитата semiono
Ещё офтоп, подскажите, можно ли буффер обмена использовать в коммандах типа @echo или > и >>
Я имею ввиду, то что в виндоус в GUI делаем когда Select All / Copy и потом это вставить через "%1" какнибудь? Или может как-то иначе? »

Про это скажите ктнить тоже чтонибудь?

batyaPS 17-07-2009 20:47 1170884

gora,
Цитата:

Цитата gora
batyaPS, прикрепил к посту 29. »

архив битый . перезалей плиз

gora 17-07-2009 20:53 1170887

Цитата:

Цитата batyaPS
архив битый »

Архив не битый, это lzma2. Распаковывайте только архиватором 7-Zip и только последней версией (9.04beta).

semiono 18-07-2009 02:46 1171110

Copy Command Line Output to Windows Clipboard Directly
http://www.labnol.org/software/tutor...clip-exe/2506/
clip.exe [14 kb]
:)
правда я хотел в другую сторону

Iska 18-07-2009 06:23 1171136

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

Если не найдёте, можете попробовать скомпилировать наподобие такого скрипта AutoIt:
читать дальше »
Код:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#Include <ClipBoard.au3>
#Include <String.au3>

AutoItSetOption("MustDeclareVars", 1)

Local $hdropDropHandle
Local $lngIDListLenght
Local $arrRetValues
Local $i
Local $strFileNameBuffer

If _ClipBoard_IsFormatAvailable($CF_HDROP) Then
        If _ClipBoard_Open(0) Then
                $hdropDropHandle = _ClipBoard_GetData($CF_HDROP)

                $arrRetValues = DllCall("shell32.dll", "uint", "DragQueryFileW", "uint", $hdropDropHandle, "uint", -1, "wstr", Chr(0), "uint", 0)
                $lngIDListLenght = $arrRetValues[0]

                For $i = 1 To $lngIDListLenght
                        $strFileNameBuffer = _StringRepeat(" ", 1024)

                        $arrRetValues = DllCall("shell32.dll", "uint", "DragQueryFileW", "uint", $hdropDropHandle, "uint", $i - 1, "wstr", $strFileNameBuffer, "uint", StringLen($strFileNameBuffer))
                        ConsoleWrite($arrRetValues[3] & @CRLF)
                Next

                _ClipBoard_Close()
        EndIf
Else
        Exit(1)
EndIf

Exit(0)


Скрипт просто выводит на консоль имена файлов из буфера обмена, которые могут быть разобраны, например, командой «for». Это лишь примерный шаблон, как можно делать, поскольку и пути могут быть куда как длиннее, и вывод в консоль идёт в ANSI, а не OEM, могут быть и ошибки (да и вообще такие утилиты следует писать на C). Ежели что, думаю, в соседней теме Вам помогут довести скрипт до ума, коль и впрямь понадобится.

NiOl 20-07-2009 19:14 1172991

Вложений: 1
Цитата:

Цитата gora
Цитата semiono:
Адекватно ли это вставиться в блокнот? »
Нет. Блокнот не поддерживает DOS кодировку. Уже писал про это, прочтите предыдущую страницу. »

В программе "NotePad.exe", что поставляется с виндой, выбираем пункт меню "Format" => "Font" => "Terminal" [ => Script: OEM/DOS (других не встречал) ] и вот Вам блокнот, готовый для писанины батников, где видны и #8 и табличная графика (см. аттач):

gora 20-07-2009 20:14 1173041

NiOl, что ж, возможно Вы и правы, но признать его удобным редактором для бат файлов все же не могу. Подсветки синтаксиса нет, коды спец. символов не видны, сомневаюсь, что их можно будет набрать в Блокноте. Не говоря уже о запуске бат файла из редактора при отладке. Да и шрифт Terminal (всего два размера) меня не впечатлил. :(

NiOl 20-07-2009 20:31 1173053

Цитата:

Цитата gora
NiOl, что ж, возможно Вы и правы, но признать его удобным редактором для бат файлов все же не могу. »

Полностью с Вами согласен относительно "удобства" (к этому свойству еще следует добавить ограничение длины файла - недавно это было 32к, сколько сейчас - не знаю), отписал исключительно в защиту встроенного в Виндовс инструмента.

Сам уже который год и для заметок и для писанины и для html пользуюсь только редактором, встроенным в FAR manager (правда во 2й версии он глючный) - может быть из-за уважения чистого текста... никакой тебе цветовой свистопляски, режущей глаз (и еще ряд причин)... ;)

Iska 21-07-2009 16:41 1173731

Цитата:

Цитата NiOl
…никакой тебе цветовой свистопляски, режущей глаз »

Э… ни colorer, ни AirBrush не пользуете?

NiOl 21-07-2009 16:56 1173745

Цитата:

Цитата Iska
Э… ни colorer, ни AirBrush не пользуете? »

Стыдно не знать, но тем не менее даже не слышал таких названий. У меня редактор чистый "голубенький на синеньком", без изысков.
ЗЫ: Гугль намекнул про плагин к FAR, думаю, что это оно и есть.

В дополнение к "полезности" строки прогресса - сейчас как раз переделываю свой старый батник по пингу сети (хочу впихнуть туда автоопределение подсети, причесать внешний вид найденных устройств и размышляю о ведении протокола появления и пропадания устройств), думаю туда графику и прикрутить. Хотя всякие там анимированные "курсоры" - барахло, а вот Title - крайне полезная тулса, обязательно использую...

Karat19 07-08-2009 18:05 1188388

Здравствуйте.Помогите,пожалуста,подкорректировать bat-ник от gora под свои нужды.У меня несколько маленьких exe,которые устанавливаются в определенном порядке.Устанавливаю их через cmd,где указываю порядок установки(количество файлов не постоянное - меняется).Хотелось бы,чтобы выводилось не стандартное окно,а окно с прогресс-баром и указанием-какой файл сейчас в обработке.
Пытался разобраться в выложенном,но не хватает знаний. :sorry:

NiOl 07-08-2009 19:12 1188437

Цитата:

Цитата Karat19
где указываю порядок установки(количество файлов не постоянное - меняется) »

Эту часть пжалста по-подробнее... Опишите, как Вы сами это делаете, а глубокоуважаемый "All", думаю поможет.

Karat19 08-08-2009 11:29 1188696

NiOl,
Цитата:

Цитата NiOl
Эту часть пжалста по-подробнее... »

Да примитивно-START /WAIT Setup.exe с ключами,где Setup-имя файла.При изменении файлов редактирую ручками.Все просто как стакан.

gora 08-08-2009 11:46 1188704

Цитата:

Цитата Karat19
Устанавливаю их через cmd,где указываю порядок установки(количество файлов не постоянное - меняется). »

Цитата:

Цитата Karat19
Все просто как стакан. »

Приведите здесь ваш бат файл, чтобы и другим было понятно, что все просто.

Karat19 08-08-2009 17:32 1188848

Цитата:

Цитата gora
Приведите здесь ваш бат файл, чтобы и другим было понятно, что все просто »

Да просто все ,никакой автоматизации-все ручками.
Пример:
читать дальше »
@echo ON
start /min /wait Setup1.exe /Q

start /min /wait Setup135.exe /Q

start /min /wait Setup23a.exe /Q

start /min /wait Setup23b.exe /Q
и так 37-41 файл.В конце естественно
EXIT

При необходимости правлю ручками.

gora 08-08-2009 18:12 1188873

Karat19, попробуйте так:
Код:

@Echo Off
Setlocal EnableDelayedExpansion

rem Число символов в прогрессбаре
Set N_Col=79
rem Число иттераций (запускаемых файлов 37...41 в вашем случае) на 100% 
Set cntA=37

Set cnt=0
Echo Обработка запущена
rem Здесь прописывается список запускаемых файлов с ключами в кавычках
For %%I In (
 "Setup1.exe /Q"
 "Setup135.exe /Q"
 "Setup23a.exe /Q"
 "Setup23b.exe /Q"
) Do (
 %%~I
 Call :Bar Обработано
)
Echo.
Echo Обработка завершена
Pause>nul
Exit

:Bar
If %cnt%==0 (
 Set Line0=
 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 Set /p X=█<Nul
Set /a cnt+=1
Set /a prsnt=cnt*100/cntA
Title %1 %prsnt%%% файлов: %cnt% из %cntA%
GoTo :EOF


Karat19 08-08-2009 18:57 1188896

gora, скопировал текст, открыл WordPad'ом(прошлый bat нормально работал),вместо прогресс бара-знаки вопроса.Я так
понимаю,что где-то потерялся знак?

Karat19 09-08-2009 00:17 1189133

gora, О великий! Спасибоще! :yahoo: Разобрался,все работает!

Oleg48 18-12-2009 10:58 1298357

Подскажите пожалуйста, как реализовать средствами CMD простой таймер?
Сценарий использования примерно такой:
После запуска cmd, пользователю показывается меню где ему нужно сделать выбор, естественно в этот момент запускается таймер, если до истечения срока работы таймера пользователь не сделал свой выбор, тогда таймер запускает процедуру на выполнение действий по умолчанию. Да и хорошо было бы что бы таймер отсчитывал циферки.

AlexVong 23-01-2012 23:12 1842999

можно ли как то прикрутить прогресс бар к такому батнику?
Код:

@echo off 
SetLocal EnableDelayedExpansion   
set fi=C:\IN\001.txt 
set fi1=C:\IN\005.txt
set fi2=C:\IN\011.txt
set fi3=C:\IN\028.txt
set fo=C:\OUT\000.txt     
(for /f "tokens=1 delims=:" %%i in ('findstr /brnc:".* 0 .* 0 .* 0 .*" "%fi%"') do (  set /a $j=%%i-1& for /f "tokens=1* delims=[]" %%a in (  'find /v /n ""^<"%fi%"^|findstr /bc:"[%%i]" /c:"[!$j!]"') do echo.001 %%b  )) >"%fo%"   
(for /f "tokens=1 delims=:" %%i in ('findstr /brnc:".* 0 .* 0 .* 0 .*" "%fi1%"') do (  set /a $j=%%i-1& for /f "tokens=1* delims=[]" %%a in (  'find /v /n ""^<"%fi1%"^|findstr /bc:"[%%i]" /c:"[!$j!]"') do echo.005 %%b  )) >>"%fo%"   
(for /f "tokens=1 delims=:" %%i in ('findstr /brnc:".* 0 .* 0 .* 0 .*" "%fi2%"') do (  set /a $j=%%i-1& for /f "tokens=1* delims=[]" %%a in (  'find /v /n ""^<"%fi2%"^|findstr /bc:"[%%i]" /c:"[!$j!]"') do echo.011 %%b  )) >>"%fo%"   
(for /f "tokens=1 delims=:" %%i in ('findstr /brnc:".* 0 .* 0 .* 0 .*" "%fi3%"') do (  set /a $j=%%i-1& for /f "tokens=1* delims=[]" %%a in (  'find /v /n ""^<"%fi3%"^|findstr /bc:"[%%i]" /c:"[!$j!]"') do echo.028 %%b  )) >>"%fo%"


ELADJ 13-02-2019 10:00 2857677

Здоровская штука для Батника - но блин никто так и не ответил как в этом коде прописывать название и описание файлов чтобы они не закрывали строку)
Сделайте готовый код с 5 файлами плиз для тугодумов, а)

Цитата:

Цитата Karat19
@echo ON
start /min /wait Setup1.exe /Q
start /min /wait Setup135.exe /Q
start /min /wait Setup23a.exe /Q
start /min /wait Setup23b.exe /Q
и так 37-41 файл.В конце естественно
EXIT »

Кстати это можно было вставить и в первый скрипт только без echo и exit в конце - тоже бы сработало, а удалить строку Pause>nul до exit вверху и он бы сам закрылся хих

Iska 13-02-2019 18:01 2857810

Цитата:

Цитата ELADJ
но блин никто так и не ответил как в этом коде прописывать название и описание файлов чтобы они не закрывали строку) »

Переведите на русский, пожалуйста. Для тугодумов можно со скриншотами и стрелочками.

ELADJ 08-11-2019 14:50 2895304

Цитата:

Цитата Iska
Переведите на русский, пожалуйста. Для тугодумов можно со скриншотами и стрелочками. »

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

Iska 08-11-2019 16:34 2895322

ELADJ:
Цитата:

Цитата Iska
Для тугодумов можно со скриншотами и стрелочками. »



Время: 13:07.

Время: 13:07.
© OSzone.net 2001-