узнать размер папок. экспорт в txt
как реализовать через bat либо vbs
чтобы узнать полный размер всех папок, которые находятся с .bat в одной папке. и сохранить список размеров по порядочку в txt (без названия папок. просто столбик размеров в Мб (желательно) либо в Кб) как сделать чтобы полный размер папок считался так, как будто я на нее в винде нажал alt+enter |
Цитата:
Код:
@Echo Off |
мммм... какая вкуснятина!! работает!
я смотрю, зная такой язык програмирования можно легко себе наваять тучу программ которые справятся с текущими задачами. чем искать в интернете нужную тебе перебирая десятки бесполезных! |
Мне кажется то, что предложено El Sanchez несколько эклектично, хотя по своему очень интересно, логичнее всё сделать в VBS, да и если к какой-либо папке нет доступа (например, чаще всего "System Volume Information" или к какой-то сетевой) приведенное решение не отработает.
Вот решение полностью на VBS Код:
DirName = "c:\TraLaLa\" DirName = "" (в приведенном скрипте эта строка закомментирована и не выполняется) |
Цитата:
так что вариантов два: - округлять простым отбрасыванием младших цифр в строке (3/6/9) через SET; - включить эту функциональность в VBS-модуль: Код:
CHCP 1251 >Nul Код:
Echo Do While Not WScript.StdIn.AtEndOfStream::WScript.Echo Round(CreateObject("Scripting.FileSystemObject").GetFolder(WScript.StdIn.ReadLine).Size/2^^20,2)::Loop>GetDirSize.vbs Цитата:
|
Цитата:
Код:
Echo Off |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
|
Код:
DirName = "c:\TraLaLa\" Подскажите, что надо дописать в этот скрипт, что бы в конце был суммирующий результат папки c:\TraLaLa\ |
Цитата:
Быстро
Код:
Option Explicit Правильно
Код:
Option Explicit |
Что значит ничего ?
Скрипт создаёт файл в котором пишет размер + название каждой папки в директории c:\TraLaLa\ Осталось дописать что бы определил размер самой директории c:\TraLaLa\ и тоже дописал в этот файл Может всё таки поможете ? |
Код:
Next |
|
Поправил код. Пробуйте.
|
palexa, О, неужели это я ваял? Как молоды мы были ... Вставьте между выделенным
Код:
Next Либо надо явно прописать другой путь к выходному файлу в любое доступное место вне анализируемой папки, например Код:
WhereOut = "Z:\SizeSubDir.inf" |
Iska и megaloman спасибо большое
|
Цитата:
|
palexa,
А попробуйте вот такой батник
Код:
@Echo Off Цитата:
Цитата:
|
Цитата:
|
работает батник, только слишком много информации, выводит все подпапки, абсолютно все
Но если речь зашла о батнике, Вы не могли бы выложить код батника, который посчитает размер как и предоставленный Вами vbs размер каждой папки в директории ну и в конце(в начале) размер этого каталога баником удобнее будет |
palexa, Ломать - не строить, душа не болит. Закомментируйте строку
Код:
rem For /F "usebackq delims=" %%d IN (`2^>nul Dir %1 /B /A:D`) DO Call :Out "%~1\%%d" %2- "%~3%Marg%" Добавил /A в выделенной строке. |
Кстати, что бы читать нормально файл блокнотом, пришлось добавить кодировку в строку
Код:
For /F "usebackq delims=" %%z IN (`2^>nul chcp 1251^& Dir %1 /S /A`) DO Set ZZ=!Z1! &Set Z1=%%z |
palexa, а почему бы не добавить
chcp 1251 >nul в самое начало батника, третей строкой, а не внутрь цикла. При этом, естественно, и сам батник сохранить в 1251 при наличии кириллицы в задаваемых путях? |
Лучше обзавестись вменяемым средством для работы с поддержкой различных кодировок.
|
ещё хочу спросить, как в этом батнике сделать что бы он не переписывал файл, а дописывал строки ниже
|
palexa, вместо
>"%Out%" Echo %iSize% %BoxIn% >>"%Out%" Echo %iSize% %BoxIn% А еще лучше им не пользоваться - по сравнению с VBS медленно. |
спасибо
Заметил что на много медленнее, но пока устроит |
palexa,
Вот вариант: гибрид bat и js, работает многократно быстрее голимого CMD, можно получить байты, килобайты, мегабайты, гигабайты
Код:
@set @E=1; /* |
Спасибо, попробую
|
Как оказалось время исполнения имеет значение,
Пишу Код:
@set @E=1; /* Код:
::Pause Что бы считало размер только одной верхней директории за комментировал строки :: FOR /F "usebackq delims=" %%z IN (`Cscript //NoLogo /E:jscript "%~dpnx0" "%~1\%%d" "%~2"`) DO Call :Out "%%z" "%%d" "%~2" Этого достаточно для скорости подсчёта ? |
palexa, переименуйте скрипт в txt, приложите к сообщению
|
Вложений: 1
Вот, прикладываю
|
Цитата:
Код:
>>"D:\log.txt" echo %DATE% - %time:~,5% - %COMPUTERNAME% - Начало Код:
>>"D:\log.txt" echo %DATE% - %time:~,5% - %COMPUTERNAME% - Конец |
Вложений: 1
palexa, Не делайте комментарии ::
|
Первый батник, ууу считает, устал ждать, и это самый маленький по размеру сервер
11.11.2018 - 19:58 - TS4 - Начало 122897 File(s) 43*007*258*445 bytes c:\Users\ 11.11.2018 - 21:08 - TS4 - Конец Последний обломался :( , странно как то 11.11.2018 - 21:14 - TS4 - Начало on denied "c:\Users\" 11.11.2018 - 21:14 - TS4 - Конец 1 Цитата:
Я думал оно раз в пять быстрее будет считать, скажу админу что можно задачу эту в планировщик поставить, пусть думает, вместо того что бы меня эксплуатировать ручным трудом Спасибо за помощь |
Доброго времени суток!
Не стал создавать новую тему, решил написать в подобную: Есть перечень каталогов: O:\Folder1 O:\Folder1\podFolder1 O:\Folder2\podFolder2\podpodFolder2 O:\Folder3\podFolder3 ... ... ... ... ... O:\Folder4 O:\Folder5\podFolder5 O:\Folder6 ... ... ... ... ... размер которых необходимо вывести в *.txt/*.csv (Формат: Папка -> Размер). Прошу помощи. |
Цитата:
|
CMD+JS Есть перечень каталогов, размер которых необходимо вывести в *.txt
Код:
@set @E=1; /* |
megaloman, с сетевыми дисками скрипт не хочет работать.
Код:
O:\Folder\Folder -> not found |
Цитата:
Код:
O:\Folder\Folder -> not found |
it3,
Код:
O:\Folder -> 167450 Если в путях кириллица - сохраните скрипт в 1251 кодировке (например, notepad) Проделайте в командном окне Код:
>c:\txt.txt 2>&1 Dir /b /A:D "O:\Folder" |
Вложений: 1
Цитата:
Цитата:
Но скорее всего причина именно в ней. |
Цитата:
Причина была в том, что скрипт до конца не дорабатывал. Т.е. я преждевременно открывал готовый результат, чтобы убедиться в том, что результат записывается. Но т.к. объем данных в каталогах велик, процесс занимает довольно-таки длительное время. Решение - дождаться завершения. Спасибо. Возможно ли доработать скрипт таким образом, чтобы он полученное значением складывал в существующий Excel-документ (с расширением *.xlsx) во второй столбец начиная со второй строки (т.к. порядок каталогов в *.cmd-файле соответствует порядку каталогов в Excel-документе? |
it3,
Цитата:
Еще лучше сделать по другому: в Excel.xlsm-документе сделать макрос. Причём оформить его в виде функции. Хотя, если папищи громадные, наверное это будет не очень удобно. Надо пробовать. Приказывайте! Цитата:
|
Цитата:
Т.е. в первой строке/столбце наименование столбца, далее, начиная со второй строки первого столбца список путей к каталогам. |
Вложений: 1
it3, Идея с функцией мне самому понравилась :clapping: Переименуйте приложенный файл. В ячейках функция, например:
Код:
=FFolderSize(C8) Устроит? |
Цитата:
За исключением того, когда выполняется считывание каталогов - все открытые документы Excel зависают. :-) |
Цитата:
Откройте отдельный экземпляр Microsoft Excel, и в нём уже открывайте данную Рабочую книгу. megaloman, делитель (байты/килобайты/мегабайты/гагабайты) можно при желании добавить вторым аргументом функции. |
Цитата:
Спасибо. |
it3, VBS
Категорически не советую, пока скрипт не отработал, работать с другой таблицей в другом окне. Путь к таблице, адреса ячеек пропишИте свои. Код:
FileXLS = "Z:\Soft_In\я19082113.xlsx" Цитата:
В скрипте решил, что здесь удобнее приделать еще один аргумент, поэтому чуть доработал. |
Цитата:
Цитата:
в скрипт встроен таймер, результат выводится в файл execution_speed.txt таймер безболезненно можно удалить (первые две строки и последние тоже две) Код:
$watch = [system.diagnostics.stopwatch]::startnew() #таймер |
Цитата:
Код:
Путь не найден |
it3, Не знаю.
Цитата:
Цитата:
Мой полёт извращенной фантазии: 1. Вместо латинской буквы стоИт русская: (О-O, например) 2. В ячейке в пути перед путём есть пробел(ы). 3. Путь указан в кавычках без знака = впереди. То есть, "D:\Тра ля ля" - нельзя, а ="D:\Тра ля ля" можно. Естественно, можно просто D:\Тра ля ля (без пробела впереди) Я бы рекомендовал для указанных Вами путей, где получили "Путь не найден" найти эту папку в проводнике, правой кнопкой мышки вызвать свойства, в закладке Общие, строке Расположение выделить и скопировать путь, вставить в ячейку таблицы. А вот еще возможность: скопировать указанный путь из ячейки таблицы, и в командном окне проделать Dir "вставленный из буфера путь\*.*" Посмотреть, что на это скажет команда Dir Весь этот Марлезонский балет нужен, чтобы убедиться в правильности указания пути. |
Цитата:
Даже если скопировать этот путь из Excel и вставить в проводник - путь рабочий. Если вставить из Excel в командную строку - тоже работает. |
it3, ну, упакуйте Ваш получившийся файл Рабочей книги в архив, каковой приложите к сообщению.
|
Время: 02:47. |
Время: 02:47.
© OSzone.net 2001-