<?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=13736&amp;type=atom" />
	<updated>2021-01-15T03:47:16Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13736</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=144793#p144793" />
			<content type="html"><![CDATA[<p>ОС лежит в папке &quot;A_WinDir&quot;.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2021-01-15T03:47:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=144793#p144793</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=144773#p144773" />
			<content type="html"><![CDATA[<p>Так получает список дисков:<br /></p><div class="codebox"><pre><code>DriveGet, Drivelist, List
Loop, parse, Drivelist
   msgbox % Drivelist
</code></pre></div><p>Как исключить системный диск?</p>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2021-01-14T20:38:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=144773#p144773</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=144763#p144763" />
			<content type="html"><![CDATA[<p>А как бы обойти все диски кроме системного и сохранить структуру папок из них (в виде путей)?<br /></p><div class="codebox"><pre><code>#MaxMem
#NoEnv
SetBatchLines, -1

folder := &quot;C:\Tmp&quot;
Loop, %folder%\*.*, 2
   list .= A_LoopFileLongPath &quot;`n&quot;
FileAppend, % list, %A_scriptdir%\AllSubFldList.txt
list =
return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2021-01-14T19:48:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=144763#p144763</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125644#p125644" />
			<content type="html"><![CDATA[<p><strong>KusochekDobra</strong>, Да, буду сидеть и разбираться.</p>]]></content>
			<author>
				<name><![CDATA[qqlexa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39096</uri>
			</author>
			<updated>2018-05-26T21:41:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125644#p125644</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125639#p125639" />
			<content type="html"><![CDATA[<p>Хорошо, буду знать.</p>]]></content>
			<author>
				<name><![CDATA[svoboden]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34280</uri>
			</author>
			<updated>2018-05-26T14:29:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125639#p125639</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125637#p125637" />
			<content type="html"><![CDATA[<p>В любом случае можно обойтись циклом вместо рекурсии.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2018-05-26T14:17:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125637#p125637</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125634#p125634" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, так это понятно, мне хотелось через com просто, т.к. больше информации можно получить о каталогах/файлах.</p>]]></content>
			<author>
				<name><![CDATA[svoboden]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34280</uri>
			</author>
			<updated>2018-05-26T14:03:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125634#p125634</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125633#p125633" />
			<content type="html"><![CDATA[<p>У вас Counter — статическая переменная, при каждом вызове новые данные приплюсовываются к старому значению.</p><p>Кроме того, не нужно создавать <em>fso := ComObjCreate(&quot;Scripting.FileSystemObject&quot;)</em> каждый раз заново при рекурсивном вызове, достаточно создать один раз и передавать fso при вызове.</p><p>Также нет никакого смысла разбивать алгоритм на две функции, <em>fso.GetFolder(Folder).Files.Count</em> можно получать сразу.</p><p>Вообще не стоит для этой задачи использовать рекурсию, можно получить переполнение стека.<br /></p><div class="codebox"><pre><code>#NoEnv
SetBatchLines, -1

folder := A_ScriptDir

counter := 0
Loop, Files, %folder%\*, FR
   counter++

MsgBox, % counter</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2018-05-26T13:54:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125633#p125633</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125631#p125631" />
			<content type="html"><![CDATA[<p>Да, согласен, а если написать еще один msgbox внизу, то тоже результат другой. Это как-то прибавляет результат. Может, счетчик сбрасывать надо.</p>]]></content>
			<author>
				<name><![CDATA[svoboden]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34280</uri>
			</author>
			<updated>2018-05-26T13:46:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125631#p125631</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125630#p125630" />
			<content type="html"><![CDATA[<p><strong>svoboden</strong>, вы привели хороший пример того, как НЕ нужно писать код.<br />Запустите:<br /></p><div class="codebox"><pre><code>FileCreateDir, % A_ScriptDir . &quot;\NewFolder\NewFolder&quot;
FileAppend,, % A_ScriptDir . &quot;\NewFolder\NewFolder\test.txt&quot;

    Folder := A_ScriptDir . &quot;\NewFolder&quot;

    CountFilesR(Folder) {
   static Counter := 0
   fso := ComObjCreate(&quot;Scripting.FileSystemObject&quot;)
   Folder := fso.GetFolder(Folder)
   Counter += Counter ? 0 : CountFiles(Folder)
   For Subfolder in Folder.SubFolders
   Counter += CountFiles(Subfolder),CountFilesR(Subfolder)
   return Counter
}

CountFiles(Folder) {
   fso := ComObjCreate(&quot;Scripting.FileSystemObject&quot;)
   Folder := fso.GetFolder(Folder)
   return fso.GetFolder(Folder).Files.Count
}

MsgBox % CountFilesR(Folder)
MsgBox % CountFilesR(Folder)</code></pre></div><p>Во втором сообщении результат другой, странно, правда?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2018-05-26T12:46:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125630#p125630</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125619#p125619" />
			<content type="html"><![CDATA[<p>Можно еще через Api. Так, например, можно найти количество файлов в каталогах/подкаталогах нужной папки:<br /></p><div class="codebox"><pre><code>
    Folder := &quot;Путь к каталогу&quot;

    CountFilesR(Folder) {
	static Counter := 0
	fso := ComObjCreate(&quot;Scripting.FileSystemObject&quot;)
	Folder := fso.GetFolder(Folder)
	Counter += Counter ? 0 : CountFiles(Folder)
	For Subfolder in Folder.SubFolders
	Counter += CountFiles(Subfolder),CountFilesR(Subfolder)
	return Counter
}

CountFiles(Folder) {
	fso := ComObjCreate(&quot;Scripting.FileSystemObject&quot;)
	Folder := fso.GetFolder(Folder)
	return fso.GetFolder(Folder).Files.Count
}

MsgBox % CountFilesR(Folder)
MsgBox % CountFiles(Folder)</code></pre></div><p>Насчет имен и информации каталогов/файлов, то вот:<br /><a href="https://msdn.microsoft.com/ru-ru/library/system.io.directory(v=vs.110).aspx">https://msdn.microsoft.com/ru-ru/librar … .110).aspx</a>,<br /><a href="https://msdn.microsoft.com/en-us/library/9kcx47hd.aspx">https://msdn.microsoft.com/en-us/library/9kcx47hd.aspx</a>.<br />Записать полученную информацию можно командой FileAppend.</p>]]></content>
			<author>
				<name><![CDATA[svoboden]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34280</uri>
			</author>
			<updated>2018-05-26T00:16:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125619#p125619</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125602#p125602" />
			<content type="html"><![CDATA[<p>Используйте <a href="https://autohotkey.com/docs/commands/LoopFile.htm">Loop</a> для файлов и папок.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2018-05-25T17:56:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125602#p125602</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Список файлов и папок на диске или в папке]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125599#p125599" />
			<content type="html"><![CDATA[<p>Подскажите пожалуйста, можно ли путём ахк узнать все папки/файлы находящиеся в папке/диске.<br />Функция DriveGet позволяет получить информацию только о самом диске, а я хотел бы получить информацию о находящихся папках/файлах внутри папки/диска и записать всю полученную информацию в текстовый документ.<br />Пример текстового документа:<br /></p><div class="codebox"><pre><code>
Папок внутри папки/диска : 1
Название папки - New
Файлов внутри папки/диска : 5
Названия файлов - New1.txt, New2.txt, New3.txt, New4.txt, New5.txt
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[qqlexa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39096</uri>
			</author>
			<updated>2018-05-25T17:31:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125599#p125599</id>
		</entry>
</feed>
