CMD/BAT - [решено] Сравнение свободного места на диске до и после

Ответить
Аватара пользователя
AgentMario

CMD/BAT - [решено] Сравнение свободного места на диске до и после

Сообщение AgentMario »

Код:

Код: Выделить всё

@Echo off
chcp 1251>null
Title Удаляем. Ожидайте..
<<Здесь нужно определить свободное место>>
del "C:\Users\UserName\AppData\Local\Temp\*.*" /s /q
del "C:\Windows\Temp\*.*" /s /q
<<Здесь снова определяем свободное место и выдаем инфу о том, сколько мы удалили>>

Нужно определить свободное место, почистить временные папки, снова определить свободное место и сравнить результат. Выдать освобожденное место в МБ.

В скриптах не соображаю, рылся по темам - там либо сохранение в файл, либо уже готовые скрипты, в которые я не могу вставить мои дополнения.



Не получаются даже банальные вещи - кодировка не меняется и создается файл null...
Аватара пользователя
gannet

Re: CMD/BAT - [решено] Сравнение свободного места на диске до и после

Сообщение gannet »

AgentMario, не null, а nul

и у меня, когда освоил
CMD/BAT - Сложение чисел в переменной
и научился определять
CMD/BAT - [решено] Проверка свободного места на диске



получилось такое:

[spoiler]@echo off

chcp 1251>nul

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%

)

Title Удаляем. Ожидайте..

del %Temp%\*.* /s /q

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 sFreeSizePseudoMb1=%sFreeSize:~0,-7%

)

set /a Freed=!sFreeSizePseudoMb1! - !sFreeSizePseudoMb!

echo !Freed! Мегабайт освобождено!

endlocal

exit /b 0[/spoiler]




Но для очистки временных файлов лучше использовать cleanmgr /sagerun (например,
так
- выполнять от админа и команду dism уберите, она не на каждый день)
Аватара пользователя
AgentMario

Re: CMD/BAT - [решено] Сравнение свободного места на диске до и после

Сообщение AgentMario »

По моему скромному мнению многократно быстрее очистить папки с временными файлами не посредством Del, а с помощью Rd в сочетании с Pushd и Popd. Тем более, что Del оставит неудалёнными ненужные пустые папки.

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@Echo Off
cls
Chcp 1251 >nul
FOR /F "usebackq tokens=2 delims=:" %%s IN (`fsutil volume diskfree C:`) DO Set "S1=%%s" &GoTo :Cont1
:Cont1
Call :RDT "%Tmp%"
Call :RDT "%Temp%"
FOR /F "usebackq tokens=2 delims=:" %%s IN (`fsutil volume diskfree C:`) DO Set "S2=%%s" &GoTo :Cont2
:Cont2
Set /A SS=%S2:~1,-6%-%S1:~1,-6%
Echo %SS% Мегабайт освобождено!
pause
GoTo :Eof
:RDT
	Echo Удаляем временные файлы из %1
	Pushd %1
	Rd /S /Q %1 2>nul
	Popd
GoTo :Eof
Ответить

Вернуться в «Скриптовые языки администрирования Windows»