PDA

Показать полную графическую версию : [решено] Копирование некоторых свойств папок в txt


Liberti
06-11-2013, 00:53
В общем если это возможно, то задача такая, есть много папок, в каждой из них файлы. И нужен батник который бы собирал в текстовый файл, с каждой папки свойства, типа: название папки, её размер и количество файлов.
Должно всё это выглядеть примерно так:
papka_037
20,3 Mb
120 PIC

papka_038
245 Mb
180 PIC
...

В данный момент такую задачу решаю макросом, но батником думаю было бы в разы быстрее так как скорость выполнения макросом напрямую зависит от скорости открытия окон.
Заранее спасибо за помощь.

Iska
06-11-2013, 04:50
есть много папок »
Где есть?

Liberti
06-11-2013, 18:05
Где есть? »
Локально на обыкновенном ПК, например так D:\RF\PROJECT\TPH
Адрес может меняться.

Iska
06-11-2013, 20:58
Liberti, как считается размер папки и количество файлов: только в текущей или со вложенными?

Liberti
07-11-2013, 06:36
как считается размер папки и количество файлов: только в текущей или со вложенными? »
Вложенных папок нет, есть только одна основная где лежат папки с которых и нужно переписать свойства, все папки содержат только файлы, jpg

yurfed
07-11-2013, 07:51
Вложенных папок нет, есть только одна основная где лежат папки »
Вы уж определитесь, есть вложенные или нет.
А это что по вашему? D:\RF\PROJECT\TPH
Поиск по форуму уже не работает?
[решено] получить размер каталога с подкаталогами (http://forum.oszone.net/thread-158404.html)

Iska
07-11-2013, 08:13
Liberti, на WSH:
Option Explicit

Dim strRootFolder
Dim objRootFolder
Dim objFolder


If WScript.Arguments.Count = 1 Then
strRootFolder = WScript.Arguments.Item(0)

With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strRootFolder) Then
Set objRootFolder = .GetFolder(strRootFolder)

With .CreateTextFile(.BuildPath(strRootFolder, "FolderList.txt"), True, True)
For Each objFolder In objRootFolder.SubFolders
.WriteLine objFolder.Name
.WriteLine objFolder.Size
.WriteLine objFolder.Files.Count
.WriteLine
Next

.Close
End With

Set objRootFolder = Nothing
Else
WScript.Echo "Can't find folder [" & strRootFolder & "]."
End If
End With
Else
WScript.Echo "Usage: wscript.exe " & WScript.ScriptName & " <folder>"
End If

WScript.Quit 0

Сохраните код в файл с расширением .vbs, затем просто перетащите на сохранённый файл искомую папку (например, ту же «D:\RF\PROJECT\TPH»). Результирующий файл будет создан в искомой папке под именем «FolderList.txt».

Liberti
07-11-2013, 18:30
Вы уж определитесь, есть вложенные или нет.
А это что по вашему? D:\RF\PROJECT\TPH
Поиск по форуму уже не работает? »

Папки с которых нужно списать свойства, вложенных не имеют, а адрес где они лежат это адрес. Я конечно далёк от всего этого но думаю есть два варианта работы батника/скрипта, либо изменять в нём адрес нахождения этих папок, либо закинуть этот батник/скрипт в саму папку с папками которыми нужно произвести нужные операции.
А на счёт поиска, я пробивал по свойствам, ничего не нашёл. А ссылка которую вы мне дали мне не подходит, так как там только один нужный мне пункт.

Сохраните код в файл с расширением .vbs, затем просто перетащите на сохранённый файл искомую папку (например, ту же «D:\RF\PROJECT\TPH»). Результирующий файл будет создан в искомой папке под именем «FolderList.txt». »
Вот! Отлично! То что надо, только есть небольшой нюанс, размер папки выдаётся в байтах, сможете сделать что бы выдавало в мегабайтах? Как во вкладке общее в свойствах.
И если возможно, после количества картинок дописывалась бы фраза "PIC"

В общем сейчас так:
papka 0067
51464063
166

А нужно так:
papka 0067
49,0 Mb
166 PIC

Iska
07-11-2013, 21:09
размер папки выдаётся в байтах, сможете сделать что бы выдавало в мегабайтах? »
.WriteLine FormatNumber(objFolder.Size / 2^20, 1) & " Mb"

И если возможно, после количества картинок дописывалась бы фраза "PIC" »
Не вижу смысла, но:
.WriteLine objFolder.Files.Count & " PIC"

Liberti
07-11-2013, 23:33
Всё работает как надо. Огромное спасибо за помощь!




© OSzone.net 2001-2012