Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Iska, "Мы пойдём другим путём" (В.И.Ленин) .
ИМХО, надо сделать список папок, в батнике посчитать их количество, а потом обработать, подсчитывая прОценты.
Код: Выделить весь код
@Echo Off
cls

FOR /F "usebackq Skip=2  tokens=1 delims=[]" %%n IN (`Find /I /N ":Spisok_Decrypt_fix" "%~dpnx0"`) DO Set /A NSkip=%%n

Set /A NCount=0
FOR /F "usebackq tokens=*" %%s IN (`more +%NSkip% "%~dpnx0"`) DO (If /I "%%s"=="GoTo :Eof" GoTo :Continue1) &Call Set /A NCount+=1
:Continue1

Set /A i=0
FOR /F "usebackq tokens=*" %%s IN (`more +%NSkip% "%~dpnx0"`) DO (If /I "%%s"=="GoTo :Eof" GoTo :Continue2) &Call :Action "%%s"
:Continue2

pause
GoTo :Eof

:Action
	Set /A i+=1
	Set /A Proc=100*%i%/%NCount%
	Set Act=Decrypt_fix.exe %1
	Echo %i%/%NCount%=%Proc%%%  %Act%
	%Act%
	RD /S /Q %1 2>nul
GoTo :Eof

:Spisok_Decrypt_fix
jg2e00_00_00
jg2e01_00_00
jg2e02_00_00
jg2e02_00_01
jg2e02_00_02
jg2e02_00_03
jg2e02_00_04 
jg2e02_00_05
jg2e02_01_00
GoTo :Eof
Единственное, перед RD надо бы проанализировать, как завершилась предыдущая операция, но не хватает информации в постановке: возвращается ли ErrorLevel? или должен в норме появиться определённый файл с известным именем?

И вообще, ИМХО, здесь хромает постановка задачи. Наверное легче было бы не делать ручками список папок, а прочесть его, например, посредством Dir по определённой маске в указанном месте.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:40, 22-09-2017 | #3