Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/162: Рейтинг темы: голосов - 162, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 22.02.2011
Сообщений: 62
1

Прогресс-бар копирования файлов

08.12.2011, 13:51. Показов 32673. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно сделать батник , который при копирование например 10 гб писал проценты скачивание, чтобы видно было сколько процентов уже скачал, а сколько осталось, чтобы ни сидеть не гадать долго он там еще.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2011, 13:51
Ответы с готовыми решениями:

Как сделать прогресс-бар?
Есть батник, который копирует архив командою xcopy xcopy \\192.168.0.11\555\BackUp_HOME\1...

Прогресс-бар с использованием стандартного окна Windows
Добрый вечер. Как код: @echo on echo @set @x=0 /*>>progress_bar.bat echo.>>progress_bar.bat...

Как сделать прогресс-бар для цикла операций?
Добрый день сталкнулся с проблемой. Сделал батник который запускает софтину с определенной...

CMD/BAT: Взять из работающего sfc проценты, вывести и обновлять так, как в sfc, при этом добавить прогресс-бар
Здравствуйте. Сейчас всё поподробнее. И так, выполняется команда sfc /scannow, и то, что она...

25
225 / 46 / 4
Регистрация: 27.11.2011
Сообщений: 99
08.12.2011, 16:05 2
прогресс бар коммандной строки
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@Echo Off
chcp 866
Setlocal EnableDelayedExpansion
 
Set $f=C:\1\2003.GDB
Set $d=C:\2\2003.GDB
 
If Exist "%$d%" DEL "%$d%"
For %%i In ("%$f%") Do Set $z=%%~zi
Set /A $z=$z/99
 
Set N_Col=79
Set cntA=100
Set cnt=0
rem -----------------------------
Echo начало копирования
for /l %%i in (0,1,99) do (
dd bs=%$z%c count=1 if="%$f%" of="%$d%" skip=%%i seek=%%i >nul 2>&1
Call :Bar
)
rem -----------------------------
Echo.
Echo копирование завершено
pause
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%%% скопировано из %cntA%
 
GoTo :EOF
Источник
1
1 / 1 / 0
Регистрация: 22.02.2011
Сообщений: 62
08.12.2011, 16:32  [ТС] 3
А можно прокомментировать. кто за что отвечает?
И если я буду 10 файлов копировать по 10gb
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
08.12.2011, 16:35 4
Кому не лень заюзать под себя и скинуть скрин как это выглядит?

Не по теме:

Я делал для себя прогу, которая показывает %, и второй вариант сколько времени осталось. Но они не доделаны, там тупо забита скорость копирование(при работе с камерой). На счет определения скорости копирование, еще не сделал.

0
225 / 46 / 4
Регистрация: 27.11.2011
Сообщений: 99
08.12.2011, 17:01 5
кто за что отвечает?
вот оригинал
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@Echo Off
Setlocal EnableDelayedExpansion
 
rem Число символов в прогрессбаре
Set N_Col=79
rem Число иттераций (файлов в моем случае) на 100% 
Set cntA=100
 
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
Кому не лень заюзать под себя и скинуть скрин как это выглядит?
чуть позже посмотрю как можно упростить
0
1 / 1 / 0
Регистрация: 22.02.2011
Сообщений: 62
08.12.2011, 17:35  [ТС] 6
Bash
1
copy "\\server\all\wpi_silver\" "%ProgramFiles%\wpi-silver\"
вот обычное копирование, все понятно , путь откуда качать и путь куда качать
Я не силен в этом , но в вашем коде не понимаю.
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
08.12.2011, 18:00 7
Ну поменяй
Bash
1
rem Здесь собственно рабочая процедура
на
Bash
1
copy "\\server\all\wpi_silver\" "%ProgramFiles%\wpi-silver\"
Хотя если честно, я сомневаюсь, что что-то выйдет.
0
1 / 1 / 0
Регистрация: 22.02.2011
Сообщений: 62
08.12.2011, 20:52  [ТС] 8
что совсем не получается(
1
225 / 46 / 4
Регистрация: 27.11.2011
Сообщений: 99
11.12.2011, 01:19 9
своял скрипт(отображение прогресс бара)
копирует только файлы, в дальнейшем может добавлю копирование папок.
запуск из командной строки "батника":
попробуй так:
Bash
1
2
3
4
5
6
7
8
@echo off&title 0%%
acopy.exe -o1 C:\34.mkv -o2 C:\341.mkv
title 50%%
echo Скопирован 1 файл
acopy.exe -o1 C:\34.mkv -o2 C:\341.mkv
title 100%%
echo Скопирован 2 файл
exit
-o1 путь что скопировать, имя файла
-o2 путь куда скопировать, имя файла
скрипт во вложениях
Вложения
Тип файла: rar acopy.rar (283.7 Кб, 284 просмотров)
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
11.12.2011, 22:59 10
Isn, хм. какой-то ручной прогресс бар.

Вот я запилил () копирование с прогресс баром, юзайте под себя, вспоминайте меня
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@echo off
::Первый пааметр - это откуда копировать(путь у папке)
::Второй параметр - это куда копировать(путь у папке)
::Третий параметр - это надо ли копировать вложенный папки (+s - если надо, -s если не надо)
::Четвертый параметр - это что копировать(расширение файлов без точки, не указывайте - если все файлы)
if "%~1"=="" goto :EOF
set otkyda=%~1
if "%~2"=="" goto :EOF
set kyda=%~2
if /i "%~3"=="+s" (set s=^/s) else (set s=)
if "%~4"=="" (set pac=^*) else (set pac=%~4)
setlocal enabledelayedexpansion
set /a q=0
echo Copy...0%%
cd /d "%~1"
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (set /a sall+=%%~zi)
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (call :mycopy "%%i" %%~zi)
cls
echo Copy...100%%
echo ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
goto :EOF
exit
:mycopy
set p=%~dp1
call set x=%%p:%otkyda%=%%
xcopy /q /s /y %1 "%kyda%%x%" > nul
set /a proc=(%2*10)/(%sall%/1000)
set /a q=%q%+%proc%
if "%q:~0,-2%"=="" (set q0=0) else (set q0=%q:~0,-2%)
cls
echo Copy...%q0%%%
set /a qb=(%q%*80)/10000
set /a qbx=80-%qb%
for /l %%i in (1,1,%qb%) do (set bar=!bar!Ы)
for /l %%i in (1,1,%qbx%) do (set barx=!barx!°)
echo %bar%%barx%
set bar=
set barx=
exit /b
Юзаем, например, так:
Bash
1
copybar "C:\temp" "%cd%\temp" +s rar
0
225 / 46 / 4
Регистрация: 27.11.2011
Сообщений: 99
11.12.2011, 23:11 11
Цитата Сообщение от Ris Посмотреть сообщение
Ris какой-то ручной прогресс бар.
это не ручной прогресс бар, в батнике образно написано, во вложения я добавил *.dll и *.exe который отображает нормальный gui прогресс бар,
хотя ты наверно даже не смотрел.
1
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
12.12.2011, 08:15 12
Версия 1.2
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
::Первый пааметр - это откуда копировать(путь у папке)
::Второй параметр - это куда копировать(путь у папке)
::Третий параметр - это надо ли копировать вложенный папки (+s - если надо, -s если не надо)
::Четвертый параметр - это что копировать(расширение файлов без точки, не указывайте - если все файлы)
if "%~1"=="" goto :EOF
set otkyda=%~1
if "%~2"=="" goto :EOF
set kyda=%~2
if /i "%~3"=="+s" (set s=^/s) else (set s=)
if "%~4"=="" (set pac=^*) else (set pac=%~4)
setlocal enabledelayedexpansion
set /a q=0
echo Copy...0%%
cd /d "%~1"
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (set /a sall+=%%~zi)
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (call :mycopy "%%i" %%~zi)
cls
echo Copy...100%%
echo ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
goto :EOF
exit
:mycopy
set p=%~dp1
call set x=%%p:%otkyda%=%%
xcopy /q /s /y %1 "%kyda%%x%" > nul
set /a proc=(%2*10)/(%sall%/1000)
set /a q=%q%+%proc%
if "%q:~0,-2%"=="" (set q0=0) else (set q0=%q:~0,-2%)
cls
echo Copy...%q0%%%
set /a qb=(%q%*80)/10000
if "%qb%"=="%qb_pr%" (echo %bar%%barx%&exit /b)
set /a qbx=80-%qb%
set bar=
set barx=
for /l %%i in (1,1,%qb%) do (set bar=!bar!Ы)
for /l %%i in (1,1,%qbx%) do (set barx=!barx!°)
echo %bar%%barx%
set qb_pr=%qb%
exit /b

Убран пересчет символов прогресс бара, если их столько же как и при копировании предыдущего файла.
Выводит прогресс бар при копирование нескольких файлов, то есть прогресс скопированных файлов относительно всех.
(Копирование одного файла выглядит как 0% и 100%)
Недостаток: при копирование нескольких ~10 мелких файлов(меньше 1кб), расчет не точный - получается около 115% вместо 100%.
Если найдете ошибки или у вас есть предложение пишите мне в личку здесь или на icq.

Ты прав я не смотрел файлы, я только код смотрел.

Добавлено через 8 часов 38 минут
Версия 1.3
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@echo off
::Первый пааметр - это откуда копировать(путь у папке)
::Второй параметр - это куда копировать(путь у папке)
::Третий параметр - это надо ли копировать вложенный папки (+s - если надо, -s если не надо)
::Четвертый параметр - это что копировать(расширение файлов без точки, не указывайте - если все файлы)
if "%~1"=="" goto :EOF
set otkyda=%~1
if "%~2"=="" goto :EOF
set kyda=%~2
if /i "%~3"=="+s" (set s=^/s) else (set s=)
if "%~4"=="" (set pac=^*) else (set pac=%~4)
setlocal enabledelayedexpansion
set /a q=0
echo Copy...0%%
cd /d "%~1"
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (set /a sall+=%%~zi)
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (call :mycopy "%%i" %%~zi)
cls
echo Copy...100%%
goto :EOF
exit
:mycopy
set p=%~dp1
call set x=%%p:%otkyda%=%%
xcopy /q /s /y %1 "%kyda%%x%" > nul
set /a proc=10*%2/(%sall%/1000)
if %2 LSS 10000 set /a proc=%2*10000/%sall%
set /a q=%q%+%proc%
cls
echo Copy...%q:~0,-2%.%q:~-2%%%
set /a qb=(%q%*80)/10000
if "%qb%"=="%qb_pr%" (echo %bar%%barx%&exit /b)
set /a qbx=80-%qb%
set bar=
set barx=
for /l %%i in (1,1,%qb%) do (set bar=!bar!Ы)
for /l %%i in (1,1,%qbx%) do (set barx=!barx!°)
echo %bar%%barx%
set qb_pr=%qb%
exit /b

Исправлена проблема при копирование маленьких файлов

Добавлено через 25 минут
Версия 1.4
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
::Первый пааметр - это откуда копировать(путь у папке)
::Второй параметр - это куда копировать(путь у папке)
::Третий параметр - это надо ли копировать вложенный папки (+s - если надо, -s если не надо)
::Четвертый параметр - это что копировать(расширение файлов без точки, не указывайте - если все файлы)
if "%~1"=="" goto :EOF
set otkyda=%~1
if "%~2"=="" goto :EOF
set kyda=%~2
if /i "%~3"=="+s" (set s=^/s) else (set s=)
if "%~4"=="" (set pac=^*) else (set pac=%~4)
setlocal enabledelayedexpansion
set /a q=0
echo Copy...0%%
cd /d "%~1"
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (set /a sall+=%%~zi)
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (call :mycopy "%%i" %%~zi)
cls
echo Copy...100%%
goto :EOF
exit
:mycopy
if not %2 LSS 200000000 (echo File size is larger than 200MB.&pause&exit)
set p=%~dp1
call set x=%%p:%otkyda%=%%
xcopy /q /s /y %1 "%kyda%%x%" > nul
set /a proc=10*%2/(%sall%/1000)
if %2 LSS 10000 set /a proc=%2*10000/%sall%
set /a q=%q%+%proc%
cls
echo Copy...%q:~0,-2%.%q:~-2%%%
set /a qb=(%q%*80)/10000
if "%qb%"=="%qb_pr%" (echo %bar%%barx%&exit /b)
set /a qbx=80-%qb%
set bar=
set barx=
for /l %%i in (1,1,%qb%) do (set bar=!bar!Ы)
for /l %%i in (1,1,%qbx%) do (set barx=!barx!°)
echo %bar%%barx%
set qb_pr=%qb%
exit /b

До конца исправлена проблема при копирование маленьких файлов
Копирует файлы максимум общим размером в 2GB, и каждый файл меньше 200MB.
0
1 / 1 / 0
Регистрация: 22.02.2011
Сообщений: 62
12.12.2011, 10:41  [ТС] 13
что то не удалось, может я что то не так делаю?
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
12.12.2011, 17:12 14
Ты про
это
Цитата Сообщение от Isn Посмотреть сообщение
прогресс бар коммандной строки
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@Echo Off
chcp 866
Setlocal EnableDelayedExpansion
 
Set $f=C:\1\2003.GDB
Set $d=C:\2\2003.GDB
 
If Exist "%$d%" DEL "%$d%"
For %%i In ("%$f%") Do Set $z=%%~zi
Set /A $z=$z/99
 
Set N_Col=79
Set cntA=100
Set cnt=0
rem -----------------------------
Echo начало копирования
for /l %%i in (0,1,99) do (
dd bs=%$z%c count=1 if="%$f%" of="%$d%" skip=%%i seek=%%i >nul 2>&1
Call :Bar
)
rem -----------------------------
Echo.
Echo копирование завершено
pause
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%%% скопировано из %cntA%
 
GoTo :EOF
Источник
?

Добавлено через 1 час 59 минут
Версия 1.5
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@echo off
::Первый пааметр - это откуда копировать(путь у папке)
::Второй параметр - это куда копировать(путь у папке)
::Третий параметр - это надо ли копировать вложенный папки (+s - если надо, -s если не надо)
::Четвертый параметр - это что копировать(расширение файлов без точки, не указывайте - если все файлы)
if "%~1"=="" goto :EOF
set otkyda=%~1
if "%~2"=="" goto :EOF
set kyda=%~2
if /i "%~3"=="+s" (set s=^/s) else (set s=)
if "%~4"=="" (set pac=^*) else (set pac=%~4)
setlocal enabledelayedexpansion
set /a q=0
echo Copy...0%%
echo °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
cd /d "%~1"
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (set /a sall+=%%~zi)
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (call :mycopy "%%i" %%~zi)
cls
echo Copy...100%%
echo ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
goto :EOF
exit
:mycopy
if not %2 LSS 200000000 (echo File size is larger than 200MB.&pause&exit)
set p=%~dp1
call set x=%%p:%otkyda%=%%
xcopy /q /s /y %1 "%kyda%%x%" > nul
set /a proc=10*%2/(%sall%/1000)
if %2 LSS 10000 set /a proc=%2*10000/%sall%
set /a q=%q%+%proc%
cls
echo Copy...%q:~0,-2%.%q:~-2%%%
set /a qb=(%q%*80)/10000
if "%qb%"=="%qb_pr%" (echo %bar%%barx%&exit /b)
set /a qbx=80-%qb%
set bar=
set barx=
for /l %%i in (1,1,%qb%) do (set bar=!bar!Ы)
for /l %%i in (1,1,%qbx%) do (set barx=!barx!°)
echo %bar%%barx%
set qb_pr=%qb%
exit /b

Добавлен вывод прогресс бара при 0% и 100% для более правильного отображения
2
1 / 1 / 0
Регистрация: 22.02.2011
Сообщений: 62
12.12.2011, 17:31  [ТС] 15
Не работает
0
225 / 46 / 4
Регистрация: 27.11.2011
Сообщений: 99
12.12.2011, 17:40 16
Цитата Сообщение от ewwe Посмотреть сообщение
Не работает
попробуй вариант который я предлагал выше с использованием стороннего по
0
1 / 1 / 0
Регистрация: 22.02.2011
Сообщений: 62
12.12.2011, 18:04  [ТС] 17
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@Echo Off
chcp 1251
Setlocal EnableDelayedExpansion
 
Set $=D:\1\1\
Set $=D:\1\2\
 
If Exist "%$d%" DEL "%$d%"
For %%i In ("%$f%") Do Set $z=%%~zi
Set /A $z=$z/99
 
Set N_Col=79
Set cntA=100
Set cnt=0
rem -----------------------------
Echo начало копирования
for /l %%i in (0,1,99) do (
dd bs=%$z%c count=1 if="%$f%" of="%$d%" skip=%%i seek=%%i >nul 2>&1
Call :Bar
)
rem -----------------------------
Echo.
Echo копирование завершено
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%%% скопировано из %cntA%
 
GoTo :EOF
Может в этом коде кто разберется?
0
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
12.12.2011, 21:17 18
ewwe, потому что вы не знаете как запускать bat-ники с параметрами, читайте тему Разработать программу для копирования заданного файла в домашние каталоги пользователей ПК или в инете.
Bash
1
::это комментарий, в котором я просто писал про параметры это батника.
В вашем случае запихиваем код в текстовой файл и сохраняем под именем copybar.bat
Вызываем из CMD или я помощью ярлыка или из другого батника, или из сторонней программы, командой:
Bash
1
copybar "D:\1\1\" "D:\1\2\" +s
1
1 / 1 / 0
Регистрация: 22.02.2011
Сообщений: 62
13.12.2011, 11:13  [ТС] 19
Не совсем как я хотел, но работает.
0
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
14.02.2013, 15:28 20
Почему то у меня не тикают %, сначала пишет 0%, файл (104 мб) копируется, а потом сразу 99.9% и все закрывается.
в папке test лежит файл test.exe (104 mb)
оба батника на диске D:\

copy.bat
Bash
1
copybar "C:\test\" "%cd%" +s exe
copybar.bat
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
::Первый пааметр - это откуда копировать(путь у папке)
::Второй параметр - это куда копировать(путь у папке)
::Третий параметр - это надо ли копировать вложенный папки (+s - если надо, -s если не надо)
::Четвертый параметр - это что копировать(расширение файлов без точки, не указывайте - если все файлы)
if "%~1"=="" goto :EOF
set otkyda=%~1
if "%~2"=="" goto :EOF
set kyda=%~2
if /i "%~3"=="+s" (set s=^/s) else (set s=)
if "%~4"=="" (set pac=^*) else (set pac=%~4)
setlocal enabledelayedexpansion
set /a q=0
echo Copy...0%%
cd /d "%~1"
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (set /a sall+=%%~zi)
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (call :mycopy "%%i" %%~zi)
cls
echo Copy...100%%
goto :EOF
exit
:mycopy
if not %2 LSS 200000000 (echo File size is larger than 200MB.&pause&exit)
set p=%~dp1
call set x=%%p:%otkyda%=%%
xcopy /q /s /y %1 "%kyda%%x%" > nul
set /a proc=10*%2/(%sall%/1000)
if %2 LSS 10000 set /a proc=%2*10000/%sall%
set /a q=%q%+%proc%
cls
echo Copy...%q:~0,-2%.%q:~-2%%%
set /a qb=(%q%*80)/10000
if "%qb%"=="%qb_pr%" (echo %bar%%barx%&exit /b)
set /a qbx=80-%qb%
set bar=
set barx=
for /l %%i in (1,1,%qb%) do (set bar=!bar!Ы)
for /l %%i in (1,1,%qbx%) do (set barx=!barx!°)
echo %bar%%barx%
set qb_pr=%qb%
exit /b
0
14.02.2013, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2013, 15:28
Помогаю со студенческими работами здесь

Программа для копирования файлов
Доброго времени суток, товарищи! Возможно тут найдутся люди которые смогут мне помочь! Нужно...

Скрипт для массового копирования файлов
Уважаемые гуру! Прошу помощи в написании bat-скрипта для массового копирования файлов. Нужно:...

Ошибка копирования файлов с длинными именами
Всем привет. При копировании папок с файлами возникла вот такая ошибка Можно ли ее как-то...

Пакетный файл для резервного копирования файлов
Создайте новый пакетный файл Пакетный файл, предназначенный для резервного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru