Цитата: Хочется, чтобы пользователь видел, что программа работает и не закрывал раньше времени окно.
так напиши ему что программа будет работать чтоб не трогал.
просто длительно выполняющаяся операция и зависшая программа - для батника одно и то же.
Но если очень хочется показометр и если ты знаешь как параллельным процессом отловить признаки того, что программа исправно работает - запусти этот процесс индикации параллельно в той же консоли.
пускаешь рекурсивно параллельным процессом через start /b "" "%~f0" pokazometr, в батнике ветвление в начале, и показывай той веткой батника что-то шевелящееся промежуточное - хоть длину того лога в байтах прописывай в заголовок консоли, хоть просто время, если уверен что не зависнет. Ну и флаги на окончание процесса.
только не забудь паузу в цикл индикации вставить, чтоб 100% проца не выжирать. пинг вполне сгодится.
[more=пример с таймером]
Код: @echo off
if not ~%1~==~%~nx0~ (start "" /low %~nx0 %~nx0 %* ) & goto :eof
if not ~%2~==~title~ goto :begin
:loop
Set /a Time#c=((0%Time:~0,1%)*600 + (%Time:~1,1%)*60 + (%Time:~3,1%)*10 + (%Time:~4,1%))*60 + (%Time:~6,1%)*10 + (%Time:~7,1%) - %Time#S%
title %time#c%
1>nul 2>&1 ping -n 1 -w 500 127.255.255.255
1>nul 2>&1 dir %temp%.\flag%~n0.tmp && goto :loop
exit
:begin
Set /a Time#s=((0%Time:~0,1%)*600 + (%Time:~1,1%)*60 + (%Time:~3,1%)*10 + (%Time:~4,1%))*60 + (%Time:~6,1%)*10 + (%Time:~7,1%)
echo %time% 1> %temp%.\flag%~n0.tmp
start "" /b %~nx0 %~nx0 title
chcp 1251>nul
pushd "%~dp0"
title %time%
if ~%2~==~skip~ goto :skip
1>nul 2>&1 reg delete hkcu\software\far2\pluginscache /f
1>nul 2>&1 reg export hkcu\software\far2 "%~dp0FarSave1.reg"
cd . 1> filelist.txt
for %%a in ( c:\ d:\ t:\ e:\ ) do echo scan %%a && dir /l /b /s /a-d %%a 1>> filelist.txt
echo optimise list
sed -i -c -r -f exclude.sed filelist.txt
sed -n -r -f filelist.sed filelist.txt | find /v /i "%~dp0filelist.txt%" | sort 1>filelist2.txt
del filelist.txt
if exist sed??????. del sed??????.
:skip
Set /a Time#E=((0%Time:~0,1%)*600 + (%Time:~1,1%)*60 + (%Time:~3,1%)*10 + (%Time:~4,1%))*60 + (%Time:~6,1%)*10 + (%Time:~7,1%) - %Time#S%
echo compress
winRar.exe a -m5 -s -tl -ac a%date:~6,4%-%date:~3,2%-%date:~0,2%.rar @filelist2.txt
del %temp%.\flag%~n0.tmp
Set /a Time#f=((0%Time:~0,1%)*600 + (%Time:~1,1%)*60 + (%Time:~3,1%)*10 + (%Time:~4,1%))*60 + (%Time:~6,1%)*10 + (%Time:~7,1%) - %Time#S%
ping -n 2 localhost >nul
title %Time#E% sec - %Time#f% sec
pause & exit