<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10145</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10145&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Реальный прогресс бар + копирование/удаление по файлу списка».]]></description>
		<lastBuildDate>Sat, 15 Nov 2014 03:28:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88367#p88367</link>
			<description><![CDATA[<p>Допилил этот скрипт. Все работает отлично. </p><p>Только есть одна проблема - индикатор прогресса привязал к количеству файлов, поэтому на копировании больших файлов индикатор может &quot;замерзать&quot; на некоторое время. Может кто подскажет, как привязать движение индикатора к общему объему файлов в MB?</p><p>Буду очень признателен за помощь.</p><div class="codebox"><pre><code>SourceDrive := &quot;J:&quot; ; Целевой диск с файлами из списка TestFileList.txt . Файлы могут располагаться в любом диске
Title := &quot;Куда будем копировать файлы?&quot;
FileSelectFolder, DestDir, ::{20d04fe0-3aea-1069-a2d8-08002b30309d}, 3, % Title
If !DestDir
    {
    MsgBox Директория для копирования файлов не выбрана!
    ExitApp
    }
    
Loop read, % A_ScriptDir . &quot;\TestFileList.txt&quot; ; Считываем из файла листинга Fool Path всех файлов
    {
    FileFPinList := RegExReplace(A_LoopReadLine, &quot;Drive&quot;, SourceDrive) ; Замещаем слово &quot;Drive&quot; на букву диска, где находятся искомые файлы
    SplitPath FileFPinList, CurrentFileName ; Имя считываемого файла
    FileGetSize, FileSize, % FileFPinList, M ; Получаем размер считываемого файла в мегабайтах
    TotalSize += FileSize ; Объем всех файлов в мегабайтах
    TotalFiles := A_Index ; Количество всех файлов (строк) в списке
    TotalFilesList .= FileFPinList &quot;`n&quot;
    }
    
Gui Color, Black
Gui +LastFound +ToolWindow -Caption -Resize +AlwaysOnTop 0x800000
Gui Font, s10, Verdana

Gui Add, Text, x10 y6 w380 h20 +0x200 c00C6FF +Center +BackgroundTrans, % &quot;Количество файлов: &quot; . TotalFiles
Gui Add, Progress, x10 y30 w380 h20 vIndicator c00C6FF Background000000 Range0-%TotalFiles%
Gui Add, Text, x10 y30 w380 h20 +0x200 cFFFFFF +Center +BackgroundTrans vDonPercents
Gui Add, Text, x10 y+2 w380 h20 +0x200 c00C6FF +Center +BackgroundTrans vFileName

Gui Show, w403 h80
WinSet Region, 0-0 w403 h80 R13-13
WinSet Transparent, 200

Loop, parse, TotalFilesList, `n
    {
    If A_LoopField
        {
        SplitPath A_LoopField, CurrentFileName ; Имя считываемого файла
        GuiControl 1:, FileName, % CurrentFileName
        GuiControl 1:, Indicator, +1
        GuiControl 1:, DonPercents, % PercentCount(A_index, TotalFiles) . &quot;% завершено из &quot; . TotalSize . &quot; MB&quot;
;        FileCopy % A_LoopField, % DestDir, 1
        Sleep 50
        }
    }
;__________________________________________________________________________________________________________________
; Function

PercentCount(Current, Max)
    {
    Percent := (Current / Max) * 100
    return progress round(percent, 2)
    }
    
Sleep 3000
ExitApp
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Sat, 15 Nov 2014 03:28:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88367#p88367</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88254#p88254</link>
			<description><![CDATA[<p>... уже забыл про эту тему.</p><p>Похоже, в варианте с процентами писать меньше ... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>А как можно прикрутить виндюжатный прогресс к удалению по этому списку? Копирование я знаю:</p><div class="codebox"><pre><code>objShell := ComObjCreate(&quot;Shell.Application&quot;)
objFolder := objShell.NameSpace(DestDir)
objFolder.CopyHere(SelectedFile)
objShell := objFolder := &quot;&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Wed, 12 Nov 2014 22:05:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88254#p88254</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88253#p88253</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Функцию копирования/удаления я пока не прикручивал</p></blockquote></div><p>Ну дык только от этого оно и зависит. На кофейной гуще, кто же подскажет.<br /></p><div class="quotebox"><blockquote><p>Функцию расчета процентов выдрал где-то на буржуйском форуме</p></blockquote></div><p><a href="http://forum.script-coding.com/viewtopic.php?id=8919">Кстати в чём плюсы?</a></p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 12 Nov 2014 21:31:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88253#p88253</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88251#p88251</link>
			<description><![CDATA[<p>Функцию копирования/удаления я пока не прикручивал. Это момент листинга ...<br />Как синхронизировать? ....</p>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Wed, 12 Nov 2014 21:27:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88251#p88251</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88248#p88248</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>то файлы прокручиваютя слишком быстро</p></blockquote></div><p>Ну так они видимо с такой скоростью и копируются.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 12 Nov 2014 21:10:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88248#p88248</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88247#p88247</link>
			<description><![CDATA[<p>Добрый вечер всем!</p><p>Сделал прогресс бар, который основан на расчете процентов общего объема копируемых/удаляемых файлов.<br />Функцию расчета процентов выдрал где-то на буржуйском форуме.</p><p>Собсна, вот код:<br /></p><div class="codebox"><pre><code>DestDrive := &quot;J:&quot; ; Целевой диск с файлами из списка TestFileList.txt . Файлы могут располагаться в любом диске

Gui Color, Black
Gui +LastFound +ToolWindow -Caption -Resize +AlwaysOnTop 0x800000
Gui Font, s10, Verdana

Gui Add, Progress, x10 y10 w280 h20 vIndicator c00C6FF Background000000
Gui Add, Text, x10 y10 w280 h20 +0x200 cFFFFFF +Center +BackgroundTrans vDonPercents
Gui Add, Text, x10 y+2 w280 h20 +0x200 c00C6FF +Center +BackgroundTrans vFilesName

Gui Show, w303 h55
WinSet Region, 0-0 w303 h55 R13-13
WinSet Transparent, 200

Loop read, % A_ScriptDir . &quot;\TestFileList.txt&quot; ; Считываем из файла листинга Fool Path всех файлов
    {
    StringLeft, WordDrive, A_LoopReadLine, 9 ; Выделяем из строк файла листинга слово DestDrive
    FileFPinList := RegExReplace(A_LoopReadLine, &quot;DestDrive&quot;, DestDrive) ; Замещаем слово &quot;DestDrive&quot; на букву диска, где находятся искомые файлы
    SplitPath FileFPinList, FileName ; Имя считываемого файла
    FileGetSize, FileSize, % FileFPinList, K ; Получаем размер считываемого файла в килобайтах
    TotalSize += FileSize ; Объем всех файлов
    TotalFiles := A_Index ; Количество всех файлов (строк) в списке
    }
    
TotalSize := 100
Loop %TotalSize%
    {
    GuiControl 1:, DonPercents, % ProgressBar(28, A_index, TotalSize)
    Sleep 50
    }
;__________________________________________________________________________________________________________________
; Function

ProgressBar(Length, Current, Max, Unlock = 0)
    {
    Percent := (Current / Max) * 100
    if (unlock = 0)
        length := length &gt; 97 ? 97 : length &lt; 4 ? 4 : length
    percent := percent &gt; 100 ? 100 : percent &lt; 0 ? 0 : percent
    Loop % round(((percent / 100) * length), 0)
        Progress .= &quot;&quot;
        GuiControl 1:, Indicator, +1
    Loop % Length - round(((percent / 100) * length), 0)
        Progress := &quot;&quot;
    return progress round(percent, 2) &quot;% завершено&quot;
    }
    
Sleep 3000
ExitApp
</code></pre></div><p>Фрагмент файла листинга:<br /></p><div class="codebox"><pre><code>DestDrive\boot\fonts\segmono_boot.ttf
DestDrive\boot\fonts\segoe_slboot.ttf
DestDrive\boot\fonts\segoen_slboot.ttf
DestDrive\boot\fonts\wgl4_boot.ttf
DestDrive\boot\GFXBoot.gfx
... и т.д.</code></pre></div><p>Не могу прикрутить обновление в прогрессе имен считываемых файлов.<br />Если добавить<br /></p><div class="codebox"><pre><code>GuiControl 1:, FilesName, % FileName</code></pre></div><p>в цикл Loop read, % A_ScriptDir . &quot;\TestFileList.txt&quot;, то файлы прокручиваютя слишком быстро. Если добавить Sleep, то перестает работать прогресс ... Уже мозги плавятся!</p><p>Как сделать? Пожалуйста, помогите допилить этот скрипт ...<br />Может что-то еще можно улучшить/модернизировать? ...</p><p>Благодарю за помощь!</p>]]></description>
			<author><![CDATA[null@example.com (Dr.Jekyll)]]></author>
			<pubDate>Wed, 12 Nov 2014 21:04:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88247#p88247</guid>
		</item>
	</channel>
</rss>
