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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как "прикрутить" (прогресбар), к скрипту для копирования файлов.

Ответить
Настройки темы
CMD/BAT - [решено] Как "прикрутить" (прогресбар), к скрипту для копирования файлов.

Пользователь


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

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


Изменения
Автор: ufooo
Дата: 19-05-2015
Как прикрутить прогресбар к скрипту для копирования файлов.
Вот пример скрипта который копирует файлы.
Код: Выделить весь код
@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
Когда я положил скрипт "копирования файлов" в скрипт "прогресбара", прогресбар не работает, а в своем окне консоли перечисляет скопированные файлы.
Что тут поправить, и как правильно объединить скрипты.

Отправлено: 14:59, 18-05-2015

 

Ветеран


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

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


Цитата ufooo:
Как прикрутить прогресбар к скрипту для копирования файлов. »

Что-нибудь куда-нибудь "прикрутить" -- крайне сложная задача, поскольку каждый алгоритм требует свой индивидуальный подход.




Цитата ufooo:
Когда я положил скрипт "копирования файлов" в скрипт "прогресбара", прогресбар не работает, а в своем окне консоли перечисляет скопированные файлы.
Что тут поправить, и как правильно объединить скрипты. »

В Вашем случае ни поправить, ни объединить эти коды практически нельзя, так как заранее неизвестно количество копируемых файлов.




Но я Вам написал свой код прогресс-бара и встроил его в основной код, который подвергся изменениям (именно встроил, а не объединил с основным кодом). Проересс-бар будет срабатывть столько раз, сколько будет найдено дисков с искомыми файлами, и будет показывать динамику копирования файлов с каждого диска от 0 до 100 процентов выполнения. Когда будет идти поиск файлов на диске, имена файлов отображатся уже не будут, а будет "висеть" сообщение "Drive X: processing...". Мне самому работа пакетного файла понравилась (красиво работает), надеюсь, что и Вам понравится.



Код пакетного файла:


Код: Выделить весь код
@echo off
color 1a
title %

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 (
 set m=
 set n=
 >nul 2>&1 (
 dir/a %%i:\
 )&& (
 echo Drive %%i: processing...
 >.tmp 2>nul (
 dir/a-d/b/s "%%i:\%my_file%"
 )&& (
 cls
 mode 40,4
 <nul set/p="Drive %%i: "
 title 0%% completed.
 for /f %%j in ('
  ^<.tmp find/c /v ""
 ') do (
  for /f "delims=" %%k in ('
   ^<.tmp more
  ') do (
   if not defined count (
    set name=%%~nxk
   ) else (
    call set name=%%~nk[%%count%%]%%~xk
   )
   echo f| >nul 2>&1 (
   cmd/v/c xcopy/hkry "%%k" "%my_folder%\!name!"
   )
   <nul set/p=@
   2>nul set/a m+=100000/%%j
   set/a n=m/1000
   if defined n (
    call title %%n%%%%%% completed.
   )
   set/a count+=1
  )
 )
 title 100%% completed.
 mode 90,27
 title %
 )
 )
 cls
)
del .tmp
if not defined count (
 echo The file is not found.
)

>nul ping -n 6 localhost
endlocal
exit/b 0

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

Отправлено: 23:54, 19-05-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


Цитата Georgio:
надеюсь, что и Вам понравится. »
Хорошая работа!

Последний раз редактировалось ufooo, 22-05-2015 в 18:11.


Отправлено: 02:35, 20-05-2015 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как "прикрутить" (прогресбар), к скрипту для копирования файлов.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] При открытие "vk.com", "выкидывает" на страницу для "разморозки страницы" sovenok Лечение систем от вредоносных программ 17 21-11-2013 04:09
Службы - Как прикрутить"start /affinity 0x000c" к службе Николай_Крамаренко@vk Microsoft Windows 8 и 8.1 0 28-03-2013 20:36
Интерфейс - как искать в содержимом файлов не "слово или фразу", а "вхождение символов"? w95w7 Microsoft Windows 2000/XP 0 11-10-2011 18:41
[решено] Как прикрутить к скрипту "HardDriveInfo.dll" для определения серийника жесткого? centaurvv AutoIt 3 09-03-2010 20:28
Как "прикрутить" картридер ? SimSim Железо в Linux 16 15-01-2010 11:16




 
Переход