Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/35: Рейтинг темы: голосов - 35, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 116

Как узнать сколько свободного места осталось на диске С?

01.01.1970, 03:00. Показов 7170. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от lmike
теперь по ответу @erdi, ну зачем опять КОМ? вот ничем не сложнее:
Отчего юзать КОМ не приветствуется?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.1970, 03:00
Ответы с готовыми решениями:

Определить, сколько осталось свободного места на жёстком диске
Подскажите можно ли на Delphi узнать сколько осталось места на жёстком диске? Или как придумать алгоритм что бы программа...

Как узнать, сколько свободного места на диске?
Установил на скоростную флэшку в 32 Гига. Хочется узнать, сколько уже занято.

Как в ProgressBar показать, сколько осталось места на локальном диске?
нужно что бы в програсс баре было показано скоьлько места осталось места на локальном диске? от код что покажет сколько места...

12
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
01.01.1970, 03:00
Цитата Сообщение от imendan
Отчего юзать КОМ не приветствуется?
1. Microsoft уже давно объявило эксперимент с технологией COM неудачным и всеми силами пытается от него избавиться, но некоторые корпоративные программисты продолжают его использовать и мешают Microsoft сделать это. Но когда-нибудь у них это получится. Я верю.
2. В нашей организации ни на одном сервере COM не работает, т.к. сервера не на Windows, а многие начальники предпочитают использовать MacBook-и - у них тоже не работает.
0
0 / 0 / 0
Регистрация: 29.08.2017
Сообщений: 187
11.08.2015, 16:56
Можно ли из скрипта LS узнать сколько свободного места осталось на диске С?
0
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 198
12.08.2015, 07:20
На LS - Нет.

но добавив LS2JAVA


Код (Java):
import java.io.File;

public class GetDiskSpace {

/**
* This sample source code shows
* how to check the disk space of a partition using java
* Property of teknoscope.com
* All Rights Reserved
* Version 1.0
* 08/25/2012
*/
public static void main(String[/URL][] args) {
File[/URL] f = new File[/URL]("C:\\");
System[/URL].out.println("Printing the total space");
System[/URL].out.println(f.getTotalSpace() +" bytes");
System[/URL].out.println(f.getTotalSpace()/1000.00 +" Kilobytes");
System[/URL].out.println(f.getTotalSpace()/1000000.00 +" Megabytes");
System[/URL].out.println(f.getTotalSpace()/1000000000.00 +" Gigabytes");
System[/URL].out.println("----------------------------");
System[/URL].out.println("Printing the free space");
System[/URL].out.println(f.getFreeSpace() +" bytes");
System[/URL].out.println(f.getFreeSpace()/1000.00 +" Kilobytes");
System[/URL].out.println(f.getFreeSpace()/1000000.00 +" Megabytes");
System[/URL].out.println(f.getFreeSpace()/1000000000.00 +" Gigabytes");
}

}
Printing the total space
320070479872 bytes
3.20070479872E8 Kilobytes
320070.479872 Megabytes
320.070479872 Gigabytes
----------------------------
Printing the free space
271363801088 bytes
2.71363801088E8 Kilobytes
271363.801088 Megabytes
271.363801088 Gigabytes


Или другим способом.
0
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 257
12.08.2015, 07:52
Цитата Сообщение от Domino-Designer
На LS - Нет.
ну почему же?

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 Dim fso As Variant
Dim text, fsp As String
 
Set fso = CreateObject("Scripting.FileSystemObject")
text = ""
 
Forall d In fso.Drives
If d.DriveType = 2 Then
If d.IsReady Then
fsp = Round(d.AvailableSpace / 1024 / 1024 / 1024, 2)
text = text & "Drive " & d.DriveLetter & ": - free space " & fsp & " Gb." & Chr(10)
End If
End If
End Forall
 
If text <> "" Then
Msgbox text
End If
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
12.08.2015, 09:43
да уж извращенцы
а что через доминошную статистику снять не можете?
0
0 / 0 / 0
Регистрация: 29.08.2017
Сообщений: 187
12.08.2015, 11:39
Цитата Сообщение от erdi
ну почему же?
работает! Только мне нужна одна цифра - диска, где находится Дата. Это просто продолжение "архивной темы". Нужно в целом чтобы юзер нажал кнопку, скрипт проверил хватит ли места на диске и создал локальную реплику архива.
0
0 / 0 / 0
Регистрация: 29.08.2017
Сообщений: 187
12.08.2015, 13:34
допилил, спасибо erdi! Тема закрыта
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
13.08.2015, 12:15
Цитата Сообщение от Domino-Designer
System.out.println(f.getFreeSpace() +" bytes");
и получим отлуп по секьюрити нотусевой жвм
как мы его не получим:

Код (Java):
import java.io.File;
import org.apache.commons.io.FileSystemUtils;
import lotus.domino.*;

public class JavaAgent extends AgentBase {

public void NotesMain() {

try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();

// (Your code goes here)

File[/URL][] paths;

// returns pathnames for files and directory
paths = File[/URL].listRoots();

// for each pathname in pathname array
for(File[/URL] path:paths)
{
// prints file and directory paths
System[/URL].out.println("Drive Name: "+path);
System[/URL].out.println("FreeSpace: "+FileSystemUtils.freeSpaceKb(path.toStr ing()));
}


} catch(Exception[/URL] e) {
e.printStackTrace();
}
}
}
теперь по ответу @erdi, ну зачем опять КОМ? вот ничем не сложнее:

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Initialize
On Error GoTo ErrH
Dim jsession As New Javasession
Dim FSUTIL As Javaclass
Dim FILE As Javaclass
Set FSUTIL=jsession.Getclass({org/apache/commons/io/FileSystemUtils})
Set FILE=jsession.Getclass({java/io/File})
Dim drives
drives=FILE.listRoots()
ForAll path In drives
Dim st As String
st=path.toString()
Print {Drive Name: } st
Print {FreeSpace: } FSUTIL.freeSpaceKb(st)
End ForAll
Quit:
Exit Sub
ErrH:
Error Err, RaiseError
End Sub
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
13.08.2015, 14:49
LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Type LargeInt
lngLower As Long
lngUpper As Long
End Type
 
Declare Function GetDiskFreeSpaceEx Lib "kernel32.dll" Alias "GetDiskFreeSpaceExA" _
(ByVal lpDirectoryName As String, lpFreeBytesAvailableToCaller As LargeInt,  _
lpTotalNumberOfBytes As LargeInt, lpTotalNumberofFreeBytes As LargeInt) As Long
 
Public Function FreeDiskSpace(ByVal sDriveLetter As String) As Double
Dim udtFreeBytesAvail As LargeInt, udtTtlBytes As LargeInt
Dim udtTTlFree As LargeInt
Dim dblFreeSpace As Double
If GetDiskFreeSpaceEx(sDriveLetter, udtFreeBytesAvail, udtTtlBytes, udtTTlFree) Then
If udtFreeBytesAvail.lngLower < 0 Then
dblFreeSpace = udtFreeBytesAvail.lngUpper * 2 ^ 32 + udtFreeBytesAvail.lngLower + 4294967296#
Else
dblFreeSpace = udtFreeBytesAvail.lngUpper * 2 ^ 32 + udtFreeBytesAvail.lngLower
End If
End If
FreeDiskSpace = dblFreeSpace
End Function
использование:

LotusScript
1
2
3
Dim FreeSpace As Double
FreeSpace = FreeDiskSpace("C:\")
Print CStr(FreeSpace)
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
13.08.2015, 18:03
Цитата Сообщение от garrick
Declare Function GetDiskFreeSpaceEx Lib "kernel32.dll" Alias "GetDiskFreeSpaceExA" _
это не лучше КОМы
0
1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
14.08.2015, 10:45
по аналогии с Win API можно использовать Notes API для получения серверной статистики с помошью StatQuery()

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
Option Public
Option Explicit
 
 
 
 
%REM
Агент демонстрирует как получить информацию о сервере или рабочей станции
используя вызовы Notes API. Вы получите только часть информации, если
будете вызывать функции на деслтопе, также попробуйте их использовать
на сервере для получения подробной информации.
 
 
 
 
Недокументированная API функция Cmovmem используется в этом примере
под псевдонимом CopyBufferToString - она копирует содержимое буфера
и возвращает данные в виде строки в Лотус скрипт. Иногда использовать
эту функцию небезопасно, но она хороша для сохранения данных.
 
 
 
 
%END REM
 
 
 
 
 
 
 
 
** Функция статистики
Declare Function StatQuery Lib "nnotes" (Byval headerString As String, _
Byval namePrefix As String, Byval valuePrefix As String, Byval lineSuffix As String, _
rethStats As Long, retStatsLength As Long) As Integer
 
 
 
 
** если хотите получить всю статистическую информацию, используйте значение 0& в качестве statName;
** иначе, вы можете получить специфическую статистику (такую как Time.Current)
Declare Function StatQueryTime Lib "nnotes" (Byval facility As String, _
Byval statName As Any, Byval headerString As String, Byval namePrefix As String, _
Byval valuePrefix As String, Byval lineSuffix As String, rethStats As Long, _
retStatsLength As Long) As Integer
 
 
 
 
Const STATPKG_OS = "OS"
Const STATPKG_STATS = "Stats"
Const STATPKG_OSMEM = "Mem"
Const STATPKG_OSSEM = "Sem"
Const STATPKG_OSSPIN = "Spin"
Const STATPKG_OSFILE = "Disk"
Const STATPKG_SERVER = "Server"
Const STATPKG_REPLICA = "Replica"
Const STATPKG_MAIL = "Mail"
Const STATPKG_MAILBYDEST = "MailByDest"
Const STATPKG_COMM = "Comm"
Const STATPKG_NSF = "Database"
Const STATPKG_NIF = "Database"
Const STATPKG_TESTNSF = "Testnsf"
Const STATPKG_OSIO = "IO"
Const STATPKG_NET = "NET"
Const STATPKG_OBJSTORE = "Object"
Const STATPKG_AGENT = "Agent"
Const STATPKG_WEB = "Web"
Const STATPKG_CAL = "Calendar"
Const STATPKG_SMTP = "SMTP"
Const STATPKG_LDAP = "LDAP"
Const STATPKG_NNTP = "NNTP"
Const STATPKG_ICM = "ICM"
Const STATPKG_MONITOR = "Monitor"
Const STATPKG_POP3 = "POP3"
 
 
 
 
** Функции памяти
Declare Function OSLockObject Lib "nnotes.dll" (Byval objectHandle As Long) As Long
Declare Function OSUnlockObject Lib "nnotes.dll" (Byval objectHandle As Long) As Integer
Declare Function OSMemFree Lib "nnotes" (Byval handle As Long) As Integer
 
 
 
 
** недокументировання функция Notes API копирования буфера памяти в строку
Declare Sub CopyBufferToString Lib "nnotes.dll" Alias "Cmovmem"  _
(Byval lpSrc As Long, Byval lpDest As String, Byval lSize As Long)
 
 
 
 
** если вы хотите копировать не строковые данные, используйте параметр lpDest As Any
Declare Sub CopyBuffer Lib "nnotes.dll" Alias "Cmovmem"  _
(Byval lpSrc As Long, lpDest As Any, Byval lSize As Long)
 
 
 
 
 
 
 
 
Sub Initialize
** выгрузка данных в файл -- код должен быть запущен на сервере и для получения должны быть данные
Dim newLine As String
Dim fileNum As Integer
Dim fileName As String
Dim nError As Integer
Dim statBuffer As Long
Dim statBufferLen As Long
Dim statArray(0 To 25) As String
 
statArray(0) = STATPKG_OS
statArray(1) = STATPKG_STATS
statArray(2) = STATPKG_OSMEM
statArray(3) = STATPKG_OSSEM
statArray(4) = STATPKG_OSSPIN
statArray(5) = STATPKG_OSFILE
statArray(6) = STATPKG_SERVER
statArray(7) = STATPKG_REPLICA
statArray(8) = STATPKG_MAIL
statArray(9) = STATPKG_MAILBYDEST
statArray(10) = STATPKG_COMM
statArray(11) = STATPKG_NSF
statArray(12) = STATPKG_NIF
statArray(13) = STATPKG_TESTNSF
statArray(14) = STATPKG_OSIO
statArray(15) = STATPKG_NET
statArray(16) = STATPKG_OBJSTORE
statArray(17) = STATPKG_AGENT
statArray(18) = STATPKG_WEB
statArray(19) = STATPKG_CAL
statArray(20) = STATPKG_SMTP
statArray(21) = STATPKG_LDAP
statArray(22) = STATPKG_NNTP
statArray(23) = STATPKG_ICM
statArray(24) = STATPKG_MONITOR
statArray(25) = STATPKG_POP3
 
newLine = Chr(13) & Chr(10)
 
** открытие тукстового файла
fileNum = Freefile()
fileName = "C:\TestStats.txt"
Open fileName For Output As fileNum
 
** выгрузка одиночниых данных, используя StatQueryTime
nError = StatQueryTime (STATPKG_STATS, "Time.Start", "Start Time:" & newline, _
"  ", Chr(9), newLine, statBuffer, statBufferLen)
Print #fileNum, "GETTING SINGLE STAT USING StatQueryTime"
If (nError = 0) Then
Print #fileNum, GetBufferAsString(statBuffer, Cint(statBufferLen), 0, True)
Else
Print #fileNum, "API Error " & nError & " calling StatQueryTime"
End If
 
** выгрузка всех данных, используя StatQueryTime
Print #fileNum, "GETTING ALL STATS USING StatQueryTime"
Forall stat In statArray
nError = StatQueryTime (stat, 0&, "Statistics for " & stat & ":" & newLine, _
"  ", Chr(9), newLine, statBuffer, statBufferLen)
If (nError = 0) Then
Print #fileNum, GetBufferAsString(statBuffer, Cint(statBufferLen), 0, True)
Else
Print #fileNum, "API Error " & nError & " calling StatQueryTime"
End If
End Forall
 
** выгрузка всех данных в файл, используя   StatQuery
nError = StatQuery ("From Stat Query:" & newLine, "  ", Chr(9), newLine, _
statBuffer, statBufferLen)
Print #fileNum, "GETTING ALL STATS USING StatQuery (" & statBufferLen & " bytes)"
If (nError = 0) Then
** здесь возможно использовать более 32,767 (наибольшее значение в Notes для типа Integer)
** таким образом потребуется несколько проходов
Dim chunkSize As Integer
Dim offset As Long
Dim freeMem As Integer
While statBufferLen > 0
If (statBufferLen > 32767) Then
chunkSize = 32767
freeMem = False
Else
chunkSize = statBufferLen
freeMem = True
End If
Print #fileNum, GetBufferAsString(statBuffer, chunkSize, offset, freeMem);
offset = offset + chunkSize
statBufferLen = statBufferLen - chunkSize
Wend
Else
Print #fileNum, "API Error " & nError & " calling StatQuery"
End If
 
** не принебрегайте закрытием файла после выгрузки в него данных
Close fileNum
Print "Finyshed writing to " & fileName
 
End Sub
 
 
 
 
Function GetBufferAsString (buffer As Long, bufferLen As Integer, _
offset As Long, freeMem As Integer) As String
** Копирование информации из буфера в строку
** используя недокументированную функцию Cmovmem API
**
** "buffer" адрес буфера
** "bufferLen" количество байт для копирования
** "offset" точка отсчета начала копирования  (
** "freeMem" индикатор буфера
**  по необходимости буфер можно очищать или оставлять так как есть
**
** Julian Robychaux -- http://www.nsftools.com
 
Dim pointer As Long
Dim bufferText As String
 
bufferText = Space(bufferLen)
pointer = OSLockObject(buffer)
Call CopyBufferToString(pointer + offset, bufferText, Clng(bufferLen))
Call OSUnlockObject(buffer)
 
** Предупреждение: если после вызова OSMemFree вы попробуете заблокировать или
** получить доступ к буферу, тогда это приведет к сбою лотуса
If freeMem Then
Call OSMemFree(buffer)
End If
 
GetBufferAsString = bufferText
End Function
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
16.08.2015, 08:14
Цитата Сообщение от lmike
это не лучше КОМы
Так же непереносимо в другую среду, но лучше... как мне кажется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.08.2015, 08:14
Помогаю со студенческими работами здесь

Как узнать, сколько на дисках свободного места
Пожалуйста форумчане помогите с кодом как узнать сколько на дисках свободного места, надо чтоб в консоле под windows вывело на экран...

Показать ёмкость дисков и сколько осталось на них свободного места
Ребята, подскажите, как подкрутить этот код, чтоб показывало ещё и ёмкость дисков и сколько осталось на них свободного места? ...

Как узнать, сколько свободного места есть в стеке потока?
Всем привет! Речь про использование такой &quot;замечательной&quot; штуки в C#, как stackalloc. Якобы сделали её для оптимизации, чтобы не...

Подскажите вариант. Как увеличить раздел home за счёт свободного (нераспределённого) места на hdd диске?
Почему-то решил при установке, что для home 4Gb хватит. Но как всегда потянуло на приключения и решил установить stack для haskell. И...

Размер свободного места на диске
Как узнать размер свободного пространства на диске в мегабайтах???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru