<?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=9737</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9737&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.».]]></description>
		<lastBuildDate>Sun, 29 Jun 2014 18:23:52 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84347#p84347</link>
			<description><![CDATA[<p><strong>Alectric</strong><br />Спасибо большое, главное, что работает. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Ed)]]></author>
			<pubDate>Sun, 29 Jun 2014 18:23:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84347#p84347</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84322#p84322</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><div class="quotebox"><cite>Alectric пишет:</cite><blockquote><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p><strong>Alectric</strong><br />Можно и не сразу,</p></blockquote></div><p>Я имел ввиду, что условие, указанное в справке, будет выполняться после запятой.</p></blockquote></div><p>Так об этом в справке и сказано, о чём был Ваш пост, в котором в отличие от моего было дополнительно выделено слово - сразу?</p></blockquote></div><p>По моему это уже не важно.<br />Но, скорей всего, я выделил это еще раз для Malcev&#039;а.</p><br /><br /><p>Вот так выдает список файлов не имеющих совпадений по размеру, а также поиск в 2-х разных папках:<br /></p><div class="codebox"><pre><code>#SingleInstance,Force
SetBatchLines,-1

FileSelectFolder, path
FileSelectFolder, path2
;path=g:\
;path=%A_desktop%\test
SkipLargeFiles=1 ;пропускать файлы больше чем
Fsize=1 ; мегабайт
savefile=%A_desktop%\files.txt
count=-1

file := FileOpen(savefile, &quot;w&quot;)
if !IsObject(file)
{
  MsgBox Can&#039;t open &quot;%FileName%&quot; for writing.
  exitapp
}

; Создаем 2-а массива и счетчик
loop,%path%\*.*,0,1
{
  if stop=1
    break
  if (dir!=A_LoopFileDir)
  {
    tooltip,Сканирование файлов в папке %A_LoopFileDir%`nПросканированно %a_index% файла(ов).`nF1 - чтобы выйти.`nF2 - прервать и начать сравнение.
    dir:=A_LoopFileDir
  }
  counts++
  if (SkipLargeFiles=1 and A_LoopFileSizeMB&gt;Fsize)
    continue
  listname%a_index%:=A_LoopFileFullPath
  name%a_index%:=A_LoopFileFullPath
  if A_LoopFileSize=0
    name%a_index%.=&quot;`n size=0&quot;
  size%a_index%:=A_LoopFileSize
;  MD%a_index%:=FileMD5(A_LoopFileFullPath)
}

loop,%path2%\*.*,0,1
{
  if stop=1
    break
  if (dir!=A_LoopFileDir)
  {
    tooltip,Сканирование файлов в папке %A_LoopFileDir%`nПросканированно %counts% файла(ов).`nF1 - чтобы выйти.`nF2 - прервать и начать сравнение.
    dir:=A_LoopFileDir
  }
  if (SkipLargeFiles=1 and A_LoopFileSizeMB&gt;Fsize)
    continue
  listname%counts%:=A_LoopFileFullPath
  name%counts%:=A_LoopFileFullPath
  if A_LoopFileSize=0
    name%counts%.=&quot;`n size=0&quot;
  size%counts%:=A_LoopFileSize
;  MD%counts%:=FileMD5(A_LoopFileFullPath)
counts++
}

;msgbox,Найдено объектов: %counts%

; Определение совпадений
loop,% counts
{
  count++
  name:=name%a_index%
;  if name%count% contains %exept%
;    continue
  if name%count%=
    continue
  tim++
  if tim&gt;5
  {
    name:=name%a_index%
    tooltip,Сравнение файлов:`n%name%`n%a_index%\%counts%`nF1 - чтобы выйти.
    tim=
  }
  loop,% counts
  {
    if (count=a_index or size%a_index%=&quot;&quot;)
      continue
;    if name%count% contains %exept%
;      continue
    if (size%a_index%=size%count%)
    {
listname%count%=
listname%a_index%=
;      list.= name%count% &quot;---------------&quot; name%a_index% &quot;`n&quot;
      if s=
        string:= name%count% &quot;`n&quot; name%a_index% &quot;`n&quot;
      else
        string:= name%a_index% &quot;`n&quot;
;      file.Write(string)
;      exept.= name%a_index% &quot;,&quot;
      size%a_index%=
      s++
    }
  }
  if s&gt;0
  {
    string:= &quot;`n&quot;
    file.Write(string)
    s=
  }
}

loop,% counts
{
  if listname%a_index%!=
  {
    string:=listname%a_index% &quot;`n&quot;
    file.Write(string)
  }
}


tooltip
;msgbox,%list%
msgbox,Готово!
exitapp

f2::
stop=1
return

f1::
file.Close()
exitapp


FileMD5(sFile=&quot;&quot;, cSz=4) {  ; by SKAN www.autohotkey.com/community/viewtopic.php?t=64211
 cSz := (cSz&lt;0||cSz&gt;8) ? 2**22 : 2**(18+cSz), VarSetCapacity( Buffer,cSz,0 )
 hFil := DllCall( &quot;CreateFile&quot;, Str,sFile,UInt,0x80000000, Int,3,Int,0,Int,3,Int,0,Int,0 )
 IfLess,hFil,1, Return,hFil
 hMod := DllCall( &quot;LoadLibrary&quot;, Str,&quot;advapi32.dll&quot; )
 DllCall( &quot;GetFileSizeEx&quot;, UInt,hFil, UInt,&amp;Buffer ),    fSz := NumGet( Buffer,0,&quot;Int64&quot; )
 VarSetCapacity( MD5_CTX,104,0 ),    DllCall( &quot;advapi32\MD5Init&quot;, UInt,&amp;MD5_CTX )
 Loop % ( fSz//cSz + !!Mod( fSz,cSz ) )
   DllCall( &quot;ReadFile&quot;, UInt,hFil, UInt,&amp;Buffer, UInt,cSz, UIntP,bytesRead, UInt,0 )
 , DllCall( &quot;advapi32\MD5Update&quot;, UInt,&amp;MD5_CTX, UInt,&amp;Buffer, UInt,bytesRead )
 DllCall( &quot;advapi32\MD5Final&quot;, UInt,&amp;MD5_CTX )
 DllCall( &quot;CloseHandle&quot;, UInt,hFil )
 Loop % StrLen( Hex:=&quot;123456789ABCDEF0&quot; )
  N := NumGet( MD5_CTX,87+A_Index,&quot;Char&quot;), MD5 .= SubStr(Hex,N&gt;&gt;4,1) . SubStr(Hex,N&amp;15,1)
Return MD5, DllCall( &quot;FreeLibrary&quot;, UInt,hMod )
}

</code></pre></div><p>Для MD5, думаю, нет смысла искать не совпавшие файлы.</p><p>Осталось только облагородить внешний вид кода и убрать лишнее, но это вы уж сами, а то что-то я устал.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 27 Jun 2014 18:21:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84322#p84322</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84321#p84321</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Нет оператор присвоения в выражении :=</p></blockquote></div><p>А где там указано про именно оператор присвоения?<br />Там речь идет про переменную.<br />Неправильно это правило сформулировано.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 27 Jun 2014 18:20:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84321#p84321</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84320#p84320</link>
			<description><![CDATA[<div class="quotebox"><cite>Alectric пишет:</cite><blockquote><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p><strong>Alectric</strong><br />Можно и не сразу,</p></blockquote></div><p>Я имел ввиду, что условие, указанное в справке, будет выполняться после запятой.</p></blockquote></div><p>Так об этом в справке и сказано, о чём был Ваш пост, в котором в отличие от моего было дополнительно выделено слово - сразу?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 27 Jun 2014 18:08:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84320#p84320</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84319#p84319</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p><strong>Alectric</strong><br />Можно и не сразу,</p></blockquote></div><p>Я имел ввиду, что условие, указанное в справке, будет выполняться после запятой.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 27 Jun 2014 18:02:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84319#p84319</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84318#p84318</link>
			<description><![CDATA[<p><strong>Alectric</strong><br />Можно и не сразу, <span class="bbu"><strong>Наверное...</strong></span><br /></p><div class="codebox"><pre><code>a = 5
if a = 5
   b:=6, q:=w=4, c=7
msgbox % c</code></pre></div><p><strong>Malcev</strong><br /></p><div class="quotebox"><blockquote><p>И там и там условие соблюдено.</p></blockquote></div><p>Нет оператор присвоения в выражении <strong>:=</strong>. То что далее можно использовать просто <strong>=</strong> сделано видимо для удобства, можно не использовать, не привыкли, пишите везде <strong>:=</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 27 Jun 2014 18:00:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84318#p84318</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84317#p84317</link>
			<description><![CDATA[<div class="quotebox"><cite>Ed пишет:</cite><blockquote><p>иметь с интерфейсом выбора папки</p></blockquote></div><p>Нужно добавить &quot;FileSelectFolder&quot;.</p><div class="quotebox"><cite>Ed пишет:</cite><blockquote><p>чтобы в files.txt записывались <strong>только</strong> не совпавшие по размеру, а не наоборот.</p></blockquote></div><p>Нужно подумать...</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 27 Jun 2014 17:58:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84317#p84317</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84316#p84316</link>
			<description><![CDATA[<p><strong>Alectric</strong><br />Да, все отлично работает, поэтому я и выбрал &quot;Размер&quot; за основу, потому что по MD5 во многих ситуациях не подходит, работает только с абсолютно идентичными файлами. </p><p>Из пожеланий, хотелось бы вариант с &quot;размером&quot;, иметь с интерфейсом выбора папки, как в MD5, и чтобы в files.txt записывались <strong>только</strong> не совпавшие по размеру, а не наоборот. Еще, можно было бы сделать вариант с выбором двух папок, для сравнения их друг с другом.</p>]]></description>
			<author><![CDATA[null@example.com (Ed)]]></author>
			<pubDate>Fri, 27 Jun 2014 17:49:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84316#p84316</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84315#p84315</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>переменная и знак равенства <strong><span class="bbu">сразу после запятой</span></strong> обрабатываются как присвоение (:=).</p></blockquote></div><p>Наверное...</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 27 Jun 2014 17:30:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84315#p84315</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84314#p84314</link>
			<description><![CDATA[<p>Неоднозначно для меня.<br />Почему так с становится переменной<br /> b:=6, c=7<br />А так нет?<br />b=6, c=7<br />И там и там условие соблюдено.<br /></p><div class="quotebox"><blockquote><p>переменная и знак равенства сразу после запятой обрабатываются как присвоение (:=).</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 27 Jun 2014 17:28:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84314#p84314</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84313#p84313</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Не получается:</p></blockquote></div><p>Вроде однозначно написано:<br /></p><div class="quotebox"><blockquote><p>переменная и знак равенства сразу <strong>после запятой</strong> обрабатываются как присвоение (:=).</p></blockquote></div><div class="codebox"><pre><code>a = 5
if a = 5
   b:=6, c=7
msgbox % c</code></pre></div><div class="quotebox"><blockquote><p>Я бы вообще тернарные операторы запретил бы</p></blockquote></div><p>С нетерпением ждём новый скриптовый язык.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 27 Jun 2014 17:17:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84313#p84313</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84312#p84312</link>
			<description><![CDATA[<p>Не получается:<br /></p><div class="codebox"><pre><code>a = 5
if a = 5
   b=6, c=7
msgbox % c</code></pre></div><p>Вообще все эти сокращения создают трудности для прочтения кода.<br />Я бы вообще тернарные операторы запретил бы <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 27 Jun 2014 17:08:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84312#p84312</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84311#p84311</link>
			<description><![CDATA[<p>Изменил свой последний код - добавил группировку одинаковых файлов, если их больше 2-х.<br />Пост №13.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 27 Jun 2014 17:07:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84311#p84311</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84309#p84309</link>
			<description><![CDATA[<p><a href="http://www.script-coding.com/AutoHotkey/Variables.1.0.46.07.html#3">Операторы в выражениях</a><br /></p><div class="quotebox"><cite>Запятая пишет:</cite><blockquote><p>Запятая (,). [v1.0.46+] Несколько выражений можно разместить в одной строке, если разделить их запятыми. Такое составное выражение обрабатывается слева направо. Наиболее часто это используется при выполнении множественных присвоений или вызовов функций в той же самой строке: x:=1 , y+=2 , ++index, func(). Это удобство оплачивается скоростью исполнения. Составное выражение может быть разбито на несколько строк, поскольку строка, начинающаяся с запятой (или с другого оператора), становится продолжением предыдущей строки.</p><p> Начиная с версии 1.0.46.01, переменная и знак равенства сразу после запятой обрабатываются как присвоение (:=). Например, все следующие выражения являются присвоениями: x:=1, y=2, a=b=c.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 27 Jun 2014 16:47:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84309#p84309</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Сравнить сотни файлов по размеру, игнорируя разность имен.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84308#p84308</link>
			<description><![CDATA[<p>А что за способ такой написания через запятую?<br /></p><div class="codebox"><pre><code>, Exist[A_LoopFileSize] := 1</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 27 Jun 2014 16:43:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84308#p84308</guid>
		</item>
	</channel>
</rss>
