<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10145&amp;type=atom" />
	<updated>2014-11-15T03:28:37Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=10145</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88367#p88367" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-11-15T03:28:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88367#p88367</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88254#p88254" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-11-12T22:05:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88254#p88254</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88253#p88253" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-11-12T21:31:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88253#p88253</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88251#p88251" />
			<content type="html"><![CDATA[<p>Функцию копирования/удаления я пока не прикручивал. Это момент листинга ...<br />Как синхронизировать? ....</p>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-11-12T21:27:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88251#p88251</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88248#p88248" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>то файлы прокручиваютя слишком быстро</p></blockquote></div><p>Ну так они видимо с такой скоростью и копируются.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-11-12T21:10:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88248#p88248</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Реальный прогресс бар + копирование/удаление по файлу списка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=88247#p88247" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Dr.Jekyll]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30028</uri>
			</author>
			<updated>2014-11-12T21:04:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=88247#p88247</id>
		</entry>
</feed>
