|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Свободное место на диске |
|
CMD/BAT - [решено] Свободное место на диске
|
Старожил Сообщения: 157 |
Профиль | Отправить PM | Цитировать Появилась необходимость в батнике, который будет сканировать логические диски на компе, и отправлять при помощи утилиты blat письмо либо с процентами, либо с количеством Гб свободного пространства.
В интернете информации и возможных решений хватает. Но всё либо очень не практичное, либо для powershell. Есть мысли как можно просто и удобно это реализовать? Буду благодарен за полезные советы. |
|
Отправлено: 10:17, 11-06-2018 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата s.i.p.a:
обычный dir выдаёт последней строкой размер свободного пространства |
|
Отправлено: 11:39, 11-06-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Busla:
но для папки пойдет и так @echo off setlocal enabledelayedexpansion set "d=C:\papka" for /f "tokens=3" %%a in ('2^>nul dir /a-d/s/-c "%d%"') do set sz=!pps!& set pps=%%a echo Размер папки - %sz% байт pause поэтому лучше так @echo off for /f "tokens=2 delims=:" %%a in ('fsutil volume diskfree C:') do set fr=%%a&call set fr1=%%fr:~1,2%%&call set fr2=%%fr:~3%%&goto l :l echo:Свободно на диске C: %fr1%,%fr2%Гб pause |
|
Последний раз редактировалось alpap, 11-06-2018 в 12:41. Отправлено: 12:06, 11-06-2018 | #3 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата s.i.p.a:
Перепевка по этому поводу варианта от alpap
@Echo Off cls Set "String=Свободное место на дисках (байт): " FOR /F "usebackq tokens=1,*" %%i IN (`fsutil fsinfo drives`) DO Set "All=%%j" &Call :OutString %%All:\=%% Echo %String% Pause GoTo :Eof :OutString :Begin If "%~1"=="" GoTo :Eof If Not Exist %1 Shift /1 &GoTo :Begin For /f "tokens=3*" %%a in ('dir %1\') do Set "sz=%%a" Set "String=%String%%1=%sz%; " Shift /1 &GoTo :Begin GoTo :Eof То же, но компактнее
@Echo Off cls SetLocal EnableExtensions EnableDelayedExpansion Set "String=Свободное место на дисках (байт): " FOR /F "usebackq tokens=1,*" %%i IN (`fsutil fsinfo drives`) DO ( FOR %%d IN (%%j) DO If Exist %%d ( For /f "tokens=3*" %%a in ('dir %%d') Do Set "sz=%%a" Set "String=!String!%%d=!sz!; " ) ) Set "String=%String:\=% Echo %String% Pause GoTo :Eof |
|
------- Последний раз редактировалось megaloman, 12-06-2018 в 23:55. Отправлено: 16:05, 12-06-2018 | #4 |
Старожил Сообщения: 157
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Цитата megaloman:
Получилось вот что, благодаря вам:
@Echo on cls SetLocal EnableExtensions EnableDelayedExpansion Set "String=FTP free space (byte): " FOR /F "usebackq tokens=1,*" %%i IN (`fsutil fsinfo drives`) DO ( FOR %%d IN (%%j) DO If Exist %%d ( For /f "tokens=3*" %%a in ('dir %%d') Do Set "sz=%%a" Set "String=!String!%%d=!sz!; " ) ) Set "String=%String:\=% Echo %String% blat.exe - -to login@login-soft.by -server 192.168.33.100 -f login@login-soft.by -u login@login-soft.by -pw 1111 -subject "%String%" -body "%String%" Pause GoTo :Eof Почти удобно,кроме одного момента - байты. Сами понимаете, что не 80-ый год, и мы работаем с ГБ. Как это сократить до гигов, или хотя бы мб? |
|||
Отправлено: 10:19, 13-06-2018 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать в моем коде где эта строка несложно выполняется подобное
Цитата alpap:
|
|
Отправлено: 11:02, 13-06-2018 | #6 |
Старожил Сообщения: 157
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Смысл в том, что бы в теме письма было 2-5 символов от каждого диска. т.е. 5гб или 5000мб, но не 5,578927582гб или 5 238 993 920 байт p.s. и ваш код не смог подогнать под проверку всех дисков. |
|
Отправлено: 11:59, 13-06-2018 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:49, 13-06-2018 | #8 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать s.i.p.a, Если тупо отбросить 9 знаков (если учитывать пробелы для выделения разрядов, то 12) и назвать полученное гигабайтами, то минимальная доработка:
|
------- Отправлено: 15:34, 13-06-2018 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Пропадает свободное место на системном диске | lohmatix | Microsoft Windows 8 и 8.1 | 2 | 28-11-2015 15:47 | |
HDD - [решено] лишнее свободное место на диске | sytnikanton | Накопители (SSD, HDD, USB Flash) | 4 | 04-04-2012 21:07 | |
Свободное место на системном диске | lumoder | Microsoft Windows NT/2000/2003 | 6 | 04-02-2012 15:22 | |
Инфо - Не отображается свободное место на диске | The Dream | Оформление Windows XP | 2 | 07-12-2011 07:28 | |
Свободное место на диске | InnoSanctum | Microsoft Windows NT/2000/2003 | 7 | 17-02-2009 12:48 |
|