Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка свободного места на диске

Ответить
Настройки темы
CMD/BAT - [решено] Проверка свободного места на диске

Новый участник


Сообщения: 29
Благодарности: 2

Профиль | Отправить PM | Цитировать


Есть команда fsutil volume diskfree C:
которая выводит на экран свободное место. Вопрос, как дальше можно работать с этими данными?

В итоге надо чтобы в переменной, допустим f, было число с количеством свободного места в байтах

Отправлено: 17:53, 08-04-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


white155, разбором, наподобие:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "skip=2 tokens=2 delims=:" %%i in ('fsutil volume diskfree C:') do set sFreeSize=%%i

if defined sFreeSize echo [%sFreeSize%]

endlocal
exit /b 0
Или же, аналогично:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2 delims==" %%i in (`wmic.exe LogicalDisk where "Name='c:'" get FreeSpace /value`) do set sFreeSize=%%i

if defined sFreeSize echo [%sFreeSize%]

endlocal
exit /b 0
На практике же, например, для сравнения, данный подход не очень годится вследствие того, что «sFreeSize» — строка, а попытка перевести его в псевдочисло («set /a …») упирается в ограниченную разрядность командного процессора (числа ограничены 32 битами точности).
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:29, 08-04-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 29
Благодарности: 2

Профиль | Отправить PM | Цитировать


а если сделать следующие

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2 delims==" %%i in (`wmic.exe LogicalDisk where "Name='c:'" get FreeSpace /value`) do set sFreeSize=%%i

if defined sFreeSize echo %sFreeSize:~0,-7%> C:\FreeSpace.log

endlocal
exit /b 0

можно, будет применить команду set q= и вытащить число каким-то образом из созданного файла

Отправлено: 23:54, 08-04-2011 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Можно без вывода в файл:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2 delims==" %%i in (
	`wmic.exe LogicalDisk where "Name='c:'" get FreeSpace /value`
) do set sFreeSize=%%i

if defined sFreeSize (
	set sFreeSizePseudoMb=%sFreeSize:~0,-7%
	echo [!sFreeSizePseudoMb!]
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:34, 09-04-2011 | #4


Пользователь


Сообщения: 72
Благодарности: 1

Профиль | Отправить PM | Цитировать


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

Программу запускаю перед endlocal

Отправлено: 17:59, 24-10-2011 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Arsenik77:
Iska, Можно добавить в этом батнике проверку на отсутствие файлов »
…и папок:
Код: Выделить весь код
set sFolder=<Путь к папке>

>nul (dir /b "%sFolder%" | find.exe /v "") && "<Путь к Вашей программе>"
Цитата Arsenik77:
…или нулевой размер в определенной папке. »
Поясните?!

Отправлено: 23:05, 24-10-2011 | #6


Пользователь


Сообщения: 72
Благодарности: 1

Профиль | Отправить PM | Цитировать


Iska, пишет "синтаксическая ошибка" или если убрать пробелы пишет "недопустимый путь"


Код: Выделить весь код
set sFolder=t:\SS\1
>nul (dir /b "%sFolder%" | find.exe /v "") && "call "c:\Program Files\Copy Muppy\Copy Muppy.exe" c:\COPY_1.bak -r"

Отправлено: 08:37, 25-10-2011 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


А так?
Код: Выделить весь код
set sFolder=t:\SS\1
>nul (dir /b "%sFolder%" | find.exe /v "") && "c:\Program Files\Copy Muppy\Copy Muppy.exe" "c:\COPY_1.bak" -r
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:15, 25-10-2011 | #8


Пользователь


Сообщения: 72
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Iska:
c:\COPY_1.bak »
Без ковычек работает!!!!

Отправлено: 09:50, 25-10-2011 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка свободного места на диске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - [решено] Не удается скопировать FILE. Недостаточно свободного места на диске nikitos83 Microsoft Windows 2000/XP 6 18-12-2010 18:00
Разное - [решено] Не могу найти 30 Гб свободного места на диске Diving Microsoft Windows 7 2 20-07-2010 13:16
Проверка свободного места на диске WoRG AutoIt 2 25-03-2010 17:28
Разное - Предупреждения о недостатке свободного места на диске. deltov Microsoft Windows Vista 21 02-10-2008 21:24
Определение свободного места на диске IGROK Microsoft Windows 2000/XP 8 21-10-2003 15:24




 
Переход