<?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=8216</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8216&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Копирование новых либо измененных файлов и директорий».]]></description>
		<lastBuildDate>Sun, 12 May 2013 06:38:44 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72036#p72036</link>
			<description><![CDATA[<p>Так я и непонял. Что-то связанное с рекурсией функции. <br />Так будет работать точно:<br /></p><div class="codebox"><pre><code>
GetDriveByLabel(pLabel, Repeat = 1) {  
    Loop % Repeat
    {
        DriveGet, List, List
        Loop, Parse, List
        {  
            DriveGet, Label, Label, %A_LoopField%: 
            If ( Label = pLabel ) 
                Return A_LoopField &quot;:&quot;  
        }   
        sleep, 1000
    }
}  
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 12 May 2013 06:38:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72036#p72036</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72029#p72029</link>
			<description><![CDATA[<p><strong>Malcev</strong><br />Я в замешательстве. <br />Никак не могу понять почему в функции <span class="bbu">GetDriveByLabel</span> на первой итерации оператор вызвавший функцию получает значение а в остальных итерациях остаётся пустым. Хотя при отладке внутри функции всё также верно.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 11 May 2013 19:12:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72029#p72029</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72021#p72021</link>
			<description><![CDATA[<p>serzh82saratov, код из 15 сообщения работает неверно.<br />Запускал скрипт, потом подключал усб - в итоге получал ошибку.<br />Мой же из 14 сообщения работает корректно.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 11 May 2013 14:44:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72021#p72021</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71738#p71738</link>
			<description><![CDATA[<p><strong>Офф:</strong></p><div class="quotebox"><blockquote><p>без лишних &quot;полуночных&quot; присваиваний.<br /></p><div class="codebox"><pre><code>loop, 30   ; даем 30 секунд на распознование диска
{
   if Z!=:   ; если буква есть, а не одно двоеточие
      break
   sleep, 1000
   n++
}
</code></pre></div></blockquote></div><p>30 кратная проверка переменной которая всё равно не изменится, конечно доставила <span class="postimg"><img src="http://forum.ixbt.com/rotate.gif" alt="http://forum.ixbt.com/rotate.gif" /></span><br />без обид.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 29 Apr 2013 19:16:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71738#p71738</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71730#p71730</link>
			<description><![CDATA[<p>Да, RunWait - работает.<br />Код стал намного причесаннее, без лишних &quot;полуночных&quot; присваиваний.<br />Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 29 Apr 2013 09:36:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71730#p71730</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71729#p71729</link>
			<description><![CDATA[<p>del <span class="postimg"><img src="http://xbmc.ru/forum/images/smilies/facepalm.gif" alt="http://xbmc.ru/forum/images/smilies/facepalm.gif" /></span></p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 29 Apr 2013 03:12:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71729#p71729</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71728#p71728</link>
			<description><![CDATA[<div class="quotebox"><cite>Справка пишет:</cite><blockquote><p>В отличие от Run, RunWait будет ждать завершения запущенной программы, после чего в ErrorLevel будет сохранён код выхода программы (32-битное число со знаком). Некоторые программы возвращают этот код сразу же, несмотря на то, что продолжают выполняться; эти программы порождают другой процесс.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 29 Apr 2013 03:02:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71728#p71728</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71727#p71727</link>
			<description><![CDATA[<p>Ещё так можно:<br /></p><div class="codebox"><pre><code>
copyDest := GetDriveByLabel(&quot;Флэшка 16G&quot;, 30) 
If ( copyDest = &quot;&quot; ) {
    MsgBox, 4096, USB_HDD, ERROR! 
    ExitApp
} 
copySourcePattern := &quot;G:&quot;  

 loop %copySourcePattern%\*,, 1
{
    StringReplace destDir, A_LoopFileDir, % copySourcePattern, % copyDest
    if FileExist(destDir) != &quot;D&quot;
        FileCreateDir % destDir
    dest := destDir . &quot;\&quot; . A_LoopFileName

    FileCopy, %A_LoopFileFullPath%, % dest
    if !ErrorLevel
        continue

    FileGetTime, time, % dest
    FileGetSize, size, % dest
    if (A_LoopFileTimeModified = time) &amp;&amp; (A_LoopFileSize = size)
        continue

    FileCopy, %A_LoopFileFullPath%, % dest, 1
    if ErrorLevel
        MsgBox, Could not copy &quot;%A_LoopFileFullPath%&quot; to &quot;%dest%&quot;.
}
sleep 5000
Run, D:\Abola\USB_HDD\RemUMS.exe %copyDest%
sleep 5000
MsgBox, 4096, USB_HDD, DONE!
ExitApp 

GetDriveByLabel(pLabel, Loop = 1) {  
    DriveGet, List, List
    Loop, Parse, List
    { 
        DriveGet, Label, Label, %A_LoopField%: 
        If ( Label = pLabel )
            Return A_LoopField &quot;:&quot; 
    }  
    If Loop = 1
        Return &quot;&quot;
    sleep, 1000
    GetDriveByLabel(pLabel, Loop-1)
}
</code></pre></div><p>И RemUMS.exe проверьте на код выхода через RunWait, может он что-то возвращает - для пущей уверенности, и упразднения пауз по 5 сек.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 29 Apr 2013 02:58:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71727#p71727</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71726#p71726</link>
			<description><![CDATA[<div class="codebox"><pre><code>Z := GetDriveByLabel(&quot;USB_HDD&quot;)&quot;:&quot;   ; Если диск с таким лейблом есть, то переменной присуждается буква с двоеточим.
loop, 30   ; даем 30 секунд на распознование диска
{
   if Z!=:   ; если буква есть, а не одно двоеточие
      break
   sleep, 1000
   n++
}
if n = 30    
{
   MsgBox, 4096, USB_HDD, ERROR!
   ExitApp
}</code></pre></div><p>Хотя точно,&nbsp; Z := GetDriveByLabel(&quot;USB_HDD&quot;)&quot;:&quot; надо тоже в цикл всунуть, а n=0 можно вообще не прописывать.<br />Тогда так:<br /></p><div class="codebox"><pre><code>
loop, 30
{
   Z := GetDriveByLabel(&quot;USB_HDD&quot;)&quot;:&quot;
   if Z!=:
      break
   sleep, 1000
   n++
}
if n = 30
{
   MsgBox, 4096, USB_HDD, ERROR!
   ExitApp
}

copySourcePattern := &quot;G:&quot;
copyDest := Z

loop %copySourcePattern%\*,, 1
{
    StringReplace destDir, A_LoopFileDir, % copySourcePattern, % copyDest
    if FileExist(destDir) != &quot;D&quot;
        FileCreateDir % destDir
    dest := destDir . &quot;\&quot; . A_LoopFileName

    FileCopy, %A_LoopFileFullPath%, % dest
    if !ErrorLevel
        continue

    FileGetTime, time, % dest
    FileGetSize, size, % dest
    if (A_LoopFileTimeModified = time) &amp;&amp; (A_LoopFileSize = size)
        continue

    FileCopy, %A_LoopFileFullPath%, % dest, 1
    if ErrorLevel
        MsgBox, Could not copy &quot;%A_LoopFileFullPath%&quot; to &quot;%dest%&quot;.
}
sleep 5000
Run, D:\Abola\USB_HDD\RemUMS.exe %copyDest%
sleep 5000
MsgBox, 4096, USB_HDD, DONE!
ExitApp


GetDriveByLabel(pLabel)
{
  DriveGet, var, List
  Loop, Parse, var
  {
    DriveGet, var, Label, %A_LoopField%:
    If ( var = pLabel )
      Return A_LoopField  ;  if found, will return the drive&#039;s letter
  }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 29 Apr 2013 02:20:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71726#p71726</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71725#p71725</link>
			<description><![CDATA[<p>А не могли бы вы прокомментировать эту конструкцию:<br /></p><div class="codebox"><pre><code>loop, 30
{
   if Z!=:
      break
   sleep, 1000
   n++
}
if n = 30
{
   MsgBox, 4096, USB_HDD, ERROR!
   ExitApp
}

</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 29 Apr 2013 02:13:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71725#p71725</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71724#p71724</link>
			<description><![CDATA[<p>В общем получился такой скрипт, который определяет букву USB диска по лейблу, копирует измененные файлы и потом отрубает диск с помощью <a href="http://www.autohotkey.com/board/topic/84298-remums-safely-remove-usb-mass-storage-drive/">http://www.autohotkey.com/board/topic/8 … age-drive/</a><br /></p><div class="codebox"><pre><code>Z := GetDriveByLabel(&quot;USB_HDD&quot;)&quot;:&quot;
n = 0
loop, 30
{
   if Z!=:
      break
   sleep, 1000
   n++
}
if n = 30
{
   MsgBox, 4096, USB_HDD, ERROR!
   ExitApp
}

copySourcePattern := &quot;G:&quot;
copyDest := Z

loop %copySourcePattern%\*,, 1
{
    StringReplace destDir, A_LoopFileDir, % copySourcePattern, % copyDest
    if FileExist(destDir) != &quot;D&quot;
        FileCreateDir % destDir
    dest := destDir . &quot;\&quot; . A_LoopFileName

    FileCopy, %A_LoopFileFullPath%, % dest
    if !ErrorLevel
        continue

    FileGetTime, time, % dest
    FileGetSize, size, % dest
    if (A_LoopFileTimeModified = time) &amp;&amp; (A_LoopFileSize = size)
        continue

    FileCopy, %A_LoopFileFullPath%, % dest, 1
    if ErrorLevel
        MsgBox, Could not copy &quot;%A_LoopFileFullPath%&quot; to &quot;%dest%&quot;.
}
sleep 5000
Run, D:\Abola\USB_HDD\RemUMS.exe %copyDest%
sleep 5000
MsgBox, 4096, USB_HDD, DONE!
ExitApp


GetDriveByLabel(pLabel)
{
  DriveGet, var, List
  Loop, Parse, var
  {
    DriveGet, var, Label, %A_LoopField%:
    If ( var = pLabel )
      Return A_LoopField  ;  if found, will return the drive&#039;s letter
  }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 29 Apr 2013 01:25:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71724#p71724</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71723#p71723</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Если дата исходного файла меньше, чем дата архивного файла, значит архивный файл новее</p></blockquote></div><p>Интересно, почему это является возможным? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Негоже редактировать файлы помещённые в «архив».</p><p>Вам виднее, сравнение размера выполняет поставленную задачу или решает возникшую проблему — используйте.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sun, 28 Apr 2013 23:01:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71723#p71723</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71720#p71720</link>
			<description><![CDATA[<p>Ну я руководствуюсь тем, что был код таким:<br />Если дата исходного файла меньше, чем дата архивного файла, значит архивный файл новее, следовательно его не перезаписываем.<br /></p><div class="codebox"><pre><code> FileGetTime, time, % dest
    if (A_LoopFileTimeModified &lt;= time)
        continue</code></pre></div><p>Но тут не учтен момент, что во время предыдущей архивации могло что-нибудь глюкануть и файл записался неполностью.<br />Поэтому я и решил добавить условие<br /></p><div class="codebox"><pre><code>    FileGetTime, time, % dest
    FileGetSize, size, % dest
    if (A_LoopFileTimeModified &lt;= time) &amp;&amp; (A_LoopFileSize = size)
        continue</code></pre></div><p>Или я ошибаюсь?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sun, 28 Apr 2013 16:21:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71720#p71720</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71719#p71719</link>
			<description><![CDATA[<p>Я бы не стал использовать результат сравнения размера файлов в качестве признака указывающего на различие содержимого.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sun, 28 Apr 2013 15:56:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71719#p71719</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Копирование новых либо измененных файлов и директорий]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=71716#p71716</link>
			<description><![CDATA[<p>creature.ws, а как вы думаете, не стоит ли добавить проверку на размер?<br /></p><div class="codebox"><pre><code>    FileGetTime, time, % dest
    FileGetSize, size, % dest
    if (A_LoopFileTimeModified &lt;= time) &amp;&amp; (A_LoopFileSize = size)
        continue
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sun, 28 Apr 2013 14:13:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=71716#p71716</guid>
		</item>
	</channel>
</rss>
