ufooo
18-05-2015, 14:59
Как прикрутить прогресбар к скрипту для копирования файлов.
Вот пример скрипта который копирует файлы.
@echo off
Color 1a
set "my_file=desktop.ini"
set "my_folder=%USERPROFILE%\Desktop\Temporary"
2>nul md "%my_folder%"
setlocal
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
for /f "delims=" %%j in ('
2^>nul dir/a-d/b/s "%%i:\%my_file%"
') do (
if not defined count (
set name=%%~nxj
) else (
call set name=%%~nj[%%count%%]%%~xj
)
echo f| >nul cmd/v/c xcopy/hkry "%%j" "%my_folder%\!name!"&& (
echo "%%j" is found and copied to "%my_folder%".
echo.
set/a count+=1
)
)
)
if not defined count (
echo The file is not found.
)
ping -n 6 localhost>Nul
endlocal
exit/b 0
Вот пример скрипта:"Прогресбар".
@Echo Off
Setlocal EnableDelayedExpansion
MODE CON COLS=80 LINES=4
color 1e
Set N_Col=79
Set cntD=100
Set cnt=0
Echo Processing started
:loop
Call :Starter
Call :ProgressBar Processed
If Not %cnt%==%cntD% GoTo :loop
Echo.
Echo Processing Completed
ping -n 3 localhost>Nul
Exit /b
:ProgressBar
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/cntD-%cnt%*N_Col/cntD, prsnt=cnt*100/cntD
Title %1 %prsnt%%% Files: %cnt% From %cntD%
If %Inc% GTR 0 For /L %%a In (1,1,%Inc%) Do <Nul Set /p X=Ы
GoTo :EOF
:Starter
:: Тут ваш код
For /L %%k In (1,1,10000) Do rem
GoTo :EOF
Exit /b
Когда я положил скрипт "копирования файлов" в скрипт "прогресбара", прогресбар не работает, а в своем окне консоли перечисляет скопированные файлы.
Что тут поправить, и как правильно объединить скрипты.
Вот пример скрипта который копирует файлы.
@echo off
Color 1a
set "my_file=desktop.ini"
set "my_folder=%USERPROFILE%\Desktop\Temporary"
2>nul md "%my_folder%"
setlocal
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
for /f "delims=" %%j in ('
2^>nul dir/a-d/b/s "%%i:\%my_file%"
') do (
if not defined count (
set name=%%~nxj
) else (
call set name=%%~nj[%%count%%]%%~xj
)
echo f| >nul cmd/v/c xcopy/hkry "%%j" "%my_folder%\!name!"&& (
echo "%%j" is found and copied to "%my_folder%".
echo.
set/a count+=1
)
)
)
if not defined count (
echo The file is not found.
)
ping -n 6 localhost>Nul
endlocal
exit/b 0
Вот пример скрипта:"Прогресбар".
@Echo Off
Setlocal EnableDelayedExpansion
MODE CON COLS=80 LINES=4
color 1e
Set N_Col=79
Set cntD=100
Set cnt=0
Echo Processing started
:loop
Call :Starter
Call :ProgressBar Processed
If Not %cnt%==%cntD% GoTo :loop
Echo.
Echo Processing Completed
ping -n 3 localhost>Nul
Exit /b
:ProgressBar
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/cntD-%cnt%*N_Col/cntD, prsnt=cnt*100/cntD
Title %1 %prsnt%%% Files: %cnt% From %cntD%
If %Inc% GTR 0 For /L %%a In (1,1,%Inc%) Do <Nul Set /p X=Ы
GoTo :EOF
:Starter
:: Тут ваш код
For /L %%k In (1,1,10000) Do rem
GoTo :EOF
Exit /b
Когда я положил скрипт "копирования файлов" в скрипт "прогресбара", прогресбар не работает, а в своем окне консоли перечисляет скопированные файлы.
Что тут поправить, и как правильно объединить скрипты.