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

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

Ветеран


Сообщения: 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