Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сравнение свободного места на диске до и после (http://forum.oszone.net/showthread.php?t=320567)

AgentMario 08-11-2016 10:49 2685702

Сравнение свободного места на диске до и после
 
Код:

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

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

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

gannet 08-11-2016 12:22 2685721

AgentMario, не null, а nul
и у меня, когда освоил арифметику и научился определять свободное место
получилось такое:
@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

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

AgentMario 08-11-2016 13:16 2685731

Благодарю. Работает отлично.

megaloman 09-11-2016 08:22 2685999

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

@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



Время: 22:29.

Время: 22:29.
© OSzone.net 2001-