Войти

Показать полную графическую версию : Помогите прикрутить прогресс бар к скрипту


Виктор_Падий@vk
12-11-2016, 12:00
Добрый день!
Помогите прикрутить прогресс бар к скрипту, у самого опыта не хватает, за ранние спасибо!

Собственно сам процесс бар:
@Echo Off
Setlocal EnableDelayedExpansion
MODE CON COLS=80 LINES=4
color 1e
rem Число символов в прогрессбаре
Set N_Col=79
rem Число иттераций (файлов в моем случае) на 100%
Set cntA=1000
Set cnt=0
Echo Обработка запущена
:loop
Call :Work
Call :Bar Обработано
If Not %cnt%==%cntA% GoTo :loop
Echo.
Echo Обработка завершена
pause
Exit

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

:Work
rem Здесь собственно рабочая процедура
For /L %%k In (1,1,10000) Do rem
GoTo :EOF

Скрипт:

::год
set year=%date:~6,4%
::месяц
set month=%date:~3,2%
::число
set /a day=%date:~0,2%-1


if %day% LSS 10 (set Maska=%year%%month%0%day%) else (set Maska=%year%%month%%day%)


set PathIn44=D:\Тендеры\Служебные_файлы\FTP\44
set PathOutZak44=D:\Тендеры\Служебные_файлы\Для обработки\Файлы с zakupki.gov.ru\Закупки\44-фз
set PathOutKont44=D:\Тендеры\Служебные_файлы\Для обработки\Файлы с zakupki.gov.ru\Контракты\44-фз
set PathOutProt44=D:\Тендеры\Служебные_файлы\Для обработки\Файлы с zakupki.gov.ru\Протоколы\44-фз
set PathOutCancel44=D:\Тендеры\Служебные_файлы\Для обработки\Файлы с zakupki.gov.ru\Отмененные\44-фз



::Закупки
for /f "eol=# tokens=*" %%i IN (Регионы.txt) do @cmd/c FOR /R "%PathIn44%\%%i\notifications\" %%a in (notification_%%i_%Maska%*) do ("C:\Program Files\7-Zip\7z.exe" x "%%a" -o"%PathOutZak44%\%%i" -ir@fileZak44.txt -y)

::Контракты
for /f "eol=# tokens=*" %%i IN (Регионы.txt) do @cmd/c FOR /R "%PathIn44%\%%i\contracts\" %%a in (contract_%%i_%Maska%*) do ("C:\Program Files\7-Zip\7z.exe" x "%%a" -o"%PathOutKont44%\%%i" -ir@fileKont44.txt -y)

REM ::Протоколы
for /f "eol=# tokens=*" %%i IN (Регионы.txt) do @cmd/c FOR /R "%PathIn44%\%%i\protocols\" %%a in (protocol_%%i_%Maska%*) do ("C:\Program Files\7-Zip\7z.exe" x "%%a" -o"%PathOutProt44%\%%i" -ir@fileProt44.txt -y)

::Отмененные
for /f "eol=# tokens=*" %%i IN (Регионы.txt) do @cmd/c FOR /R "%PathIn44%\%%i\notifications\" %%a in (notification_%%i_%Maska%*) do ("C:\Program Files\7-Zip\7z.exe" x "%%a" -o"%PathOutCancel44%\%%i" -ir@fileCancel44.txt -y)


"C:\Program Files\QlikView\Qv.exe" /r "C:\Users\padij\OneDrive\Qlik\Аналитика\test.qvw"
exit

Iska
12-11-2016, 12:24
Помогите прикрутить прогресс бар к скрипту, у самого опыта не хватает, за ранние спасибо! »
Как только сумеете выделить в Вашем пакетном файле отдельные равнозначимые части — так сразу. Я таких не вижу (четыре неравнозначных вызова 7-Zip — это не особо гоже).

Виктор_Падий@vk
12-11-2016, 23:44
Как только сумеете выделить в Вашем пакетном файле отдельные равнозначимые части — так сразу. Я таких не вижу (четыре неравнозначных вызова 7-Zip — это не особо гоже). »
Спасибо за ответ. А не могли привести пример с одним вызовом 7-zip
Допустим если будет так:
::год
set year=%date:~6,4%
::месяц
set month=%date:~3,2%
::число
set /a day=%date:~0,2%-1


if %day% LSS 10 (set Maska=%year%%month%0%day%) else (set Maska=%year%%month%%day%)


set PathIn44=D:\Тендеры\Служебные_файлы\FTP\44
set PathOutZak44=D:\Тендеры\Служебные_файлы\Для обработки\Файлы с zakupki.gov.ru\Закупки\44-фз

::Закупки
for /f "eol=# tokens=*" %%i IN (Регионы.txt) do @cmd/c FOR /R "%PathIn44%\%%i\notifications\" %%a in (notification_%%i_%Maska%*) do ("C:\Program Files\7-Zip\7z.exe" x "%%a" -o"%PathOutZak44%\%%i" -ir@fileZak44.txt -y)

Iska
13-11-2016, 02:09
Спасибо за ответ. А не могли привести пример с одним вызовом 7-zip »
Значит, Вы меня совсем не поняли. С одним вызовом вообще некуда «прикручивать». С четырьмя вызовами 7-Zip, натянув сову на глобус, можно организовать прогресс-бар из четырёх делений, которые абсолютно никак не будут связаны со временем распаковки. Уж лучше ничего не трогать и оставить обычный вывод 7-Zip — будет куда нагляднее.

megaloman
13-11-2016, 14:44
Виктор_Падий@vk, оставить обычный вывод 7-Zip — будет куда нагляднее. Не могу прогнозировать, сколько занимает работа одного вызова 7-Zip, но если уж хочется визуализации, то надо пользоваться не 7z.exe, a 7zG.exe - c графической оболочкой и отображением процесса в виде процесс-бара. Конечно, можно скомбинировать и организовать прогресс-бар из четырёх делений + прогресс-бар при работе 7zG.exe, но сомневаюсь, что Вы его увидите, так как окно от 7zG.exe при работе прикроет командное окно.




© OSzone.net 2001-2012