![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как "прикрутить" (прогресбар), к скрипту для копирования файлов. |
|
CMD/BAT - [решено] Как "прикрутить" (прогресбар), к скрипту для копирования файлов.
|
Пользователь Сообщения: 109 |
Как прикрутить прогресбар к скрипту для копирования файлов.
Вот пример скрипта который копирует файлы. @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
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Цитата Georgio:
|
|
Последний раз редактировалось ufooo, 22-05-2015 в 18:11. Отправлено: 02:35, 20-05-2015 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] При открытие "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 |
|