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

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

Ответить
Настройки темы
CMD/BAT - [решено] определить общий размер удалённых файлов скриптом

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


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

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


Привет

Есть скрипт на cmd, для удаления хлама из директорий пользователей

Код: Выделить весь код
for /f "delims=" %%i in ('dir "\\ts7\c$\users\*" /a:d /b') do (
rem pushd "\\ts7\C$\Users\%%i\AppData\Local\Google\Chrome\User Data\Default\Cache"
rem rmdir /s /q "\\ts7\C$\Users\%%i\AppData\Local\Google\Chrome\User Data\Default\Cache"
del /s /q "\\ts7\C$\Users\%%i\AppData\Local\Google\Chrome\User Data\Default\Cache\*"
del /s /q "\\ts7\c$\Users\%%i\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.MSO\*"
del /s /q "\\ts7\C$\Users\%%i\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\*"
del /s /q "\\ts7\c$\Users\%%i\AppData\Local\Microsoft\Windows\WER\*"
del /s /q "\\ts7\c$\Users\%%i\AppData\Local\Microsoft\Windows\Explorer\*"
del /s /q "\\ts7\c$\Users\%%i\AppData\Local\Temp\*"
del /s /q "\\ts7\c$\Users\%%i\Downloads\*"
)
pause
Помогите пожалуйста сделать так, что бы в конце был ответ сколько МБ было удалено
Если это конечно возможно и не сильно повлияет на скорость выполнения скрипта

Отправлено: 20:59, 23-11-2018

 

Ветеран


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

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


Теоретически — можно. Практически — не имеет смысла сим заморачиваться. Это не WSH и не PoSH.

Отправлено: 21:53, 23-11-2018 | #2



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

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


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


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

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


Приходится сначала смотреть место на диске, потом чистить и опять смотреть место, что бы сказать шефу сколько очистилось.
Жутко неудобно

ну не имеет так не имеет

Отправлено: 22:10, 23-11-2018 | #3


Ветеран


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

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


palexa, дело в том, что нет в пакетных файлах простого и незатейливого способа для осуществления озвученного (в отличие от WSH/PoSH).

Отправлено: 22:49, 23-11-2018 | #4


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


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

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


я понял это, спасибо

Отправлено: 22:54, 23-11-2018 | #5


Ветеран


Contributor


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

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


palexa,
Гибрид bat и js.
Код: Выделить весь код
@set @E=1; /*

@Echo Off
	Set "Drive=E"

copy E:\testfile.pdf E:\zzzzzzzzzzzzzzz >nul

	FOR /F "usebackq delims=" %%n IN (`2^>nul Cscript //NoLogo /E:jscript "%~dpnx0" "%Drive%" 0`) DO Set "N_Min=%%n"

del E:\zzzzzzzzzzzzzzz 

	FOR /F "usebackq delims= " %%n IN (`2^>nul Cscript //NoLogo /E:jscript "%~dpnx0" "%Drive%" 0`) DO Set "N_Max=%%n"
	FOR /F "usebackq delims= " %%n IN (`2^>nul Cscript //NoLogo /E:jscript "%~dpnx0" "%Drive%" 1 %N_Max% %N_Min% 2`) DO Set "Delta=%%n"

	Echo %N_Max%
	Echo %N_Min%
	Echo %Delta%
GoTo :Eof
*/

// Arg 1 = Drive
// Arg 2 = 0 Echo Free space of drive
// Arg 2 = 1 
// Arg 3 =Space1
// Arg 4 =Space2
// Arg 5 =0(Byte) 1(Kbyte) 2(Mbyte) 3(Gbyte)

var i;
var oArg = WScript.Arguments;

var nArg=oArg.Count(); 
if (nArg<2) {
	WScript.Echo("Error!_Invalid_number_of_arguments!");
	WScript.Quit(1);
}

if (oArg(1)==0){
	var FSO=WScript.CreateObject("Scripting.FileSystemObject");
	try {var D=FSO.GetDrive(oArg(0)+":")}
	catch (e) {
		if (e != 0) {
			WScript.Echo("Error!_" + oArg(0) + ":_not_exist!");
			WScript.Quit(2);
		}
	}
	WScript.Echo(D.FreeSpace);
	WScript.Quit(0);
}

if (oArg(1)==1){
	if (nArg<5) {
		WScript.Echo("Error!_Invalid_number_of_arguments!");
		WScript.Quit(1);
	}
	var D=oArg(2)-oArg(3);
	if (oArg(4)==0) {WScript.Echo(D);WScript.Quit(0)}
	if (oArg(4)==1) {WScript.Echo(Math.round(D/1024));WScript.Quit(0)}
	if (oArg(4)==2) {WScript.Echo(Math.round(D/1024/1024));WScript.Quit(0)}
	if (oArg(4)==3) {WScript.Echo(Math.round(D/1024/1024/1024));WScript.Quit(0)}
	WScript.Echo("Error!_Wrong_argument_of_size!");
	WScript.Quit(3);
}
Первый и второй вызов в For - свободное место на указанном диске
третий вызов - калькулятор разности двух чисел
Приходится привлекать для этого js, так как в cmd с большими числами работать затруднительно
В приведенном примере перед первым вызовом копируется тестовый файл,
после первого - его удаление
после третего - разность второго и первого
Если надо сетевой путь
Код: Выделить весь код
@set @E=1; /*

@Echo Off
	Set "NetPath=\\Server\Test1"
	Pushd "%NetPath%" || (
		Echo Wrong path "%NetPath%"
		Pause
		GoTo :Eof
	)
	FOR /F "usebackq delims=:" %%n IN (`cd`) DO Set "Drive=%%n"

copy E:\Test.pdf %Drive%:\zzzzzzzzzzzzzzz >nul

	FOR /F "usebackq delims=" %%n IN (`2^>nul Cscript //NoLogo /E:jscript "%~dpnx0" "%Drive%" 0`) DO Set "N_Min=%%n"

del %Drive%:\zzzzzzzzzzzzzzz 

	FOR /F "usebackq delims= " %%n IN (`2^>nul Cscript //NoLogo /E:jscript "%~dpnx0" "%Drive%" 0`) DO Set "N_Max=%%n"
	FOR /F "usebackq delims= " %%n IN (`2^>nul Cscript //NoLogo /E:jscript "%~dpnx0" "%Drive%" 1 %N_Max% %N_Min% 1`) DO Set "Delta=%%n"

	Popd

	Echo %N_Max%
	Echo %N_Min%
	Echo %Delta%
GoTo :Eof
*/

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-11-2018 в 01:06.

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

Отправлено: 00:47, 24-11-2018 | #6


Ветеран


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

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


Цитата megaloman:
Гибрид bat и js. »
Кстати, да!

Отправлено: 01:49, 24-11-2018 | #7


Ветеран


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

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


Цитата palexa:
Приходится сначала смотреть место на диске, потом чистить и опять смотреть место, что бы сказать шефу сколько очистилось. »
1. я вас удивлю, но занятое место как правило больше суммарного объёма файлов
2. какая-то регулярная профилактика - дело благое, но то, что вы делаете - профанация: кэши браузеров разрастутся обратно. В загрузках обычно лежит то, что нужно пользователю - вы бы ещё Рабочий стол "почистили". Хотя бы отбивку по времени сделайте.

Отправлено: 10:52, 24-11-2018 | #8


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Код: Выделить весь код
robocopy [какая-то пустая папка] [папка с мусором] /e /purge /log+:[файл журнала]
В отчёте будет написано, сколько удалено. Далее можно крутить как угодно - слать отчёт по почте, фильтровать строки и т. п.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 12:01, 24-11-2018 | #9


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


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

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


Что то я сильно перемудрил с задачей

Ведь по сути мне надо знать, то что написано на диске до и после выполнения чистки, когда открываешь "Мой компьютер"

А там написано до:
30ГБ свободно из 400ГБ

После
50ГБ свободно из 400ГБ

Как бы вот оно

Код: Выделить весь код
@echo off
chcp 1251 > nul
for /f "tokens=3 delims= " %%A in ('dir /s/-c ^|find "байт свободно"') do (
echo free: %%A
)
chcp 866 > nul
pause
А мне надо по сети "\\ts7\C$\

Последний раз редактировалось palexa, 24-11-2018 в 12:31.


Отправлено: 12:17, 24-11-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - Восстановление удалённых файлов побайтово - возможно ли? moran1 Накопители (SSD, HDD, USB Flash) 2 30-04-2018 20:12
Проводник показывает, что общий размер файлов на ДВД больше 200 гигов Yewgeniy Хочу все знать 21 24-06-2015 11:08
CMD/BAT - BAT файлом сравнить ряд файлов по размеру - если общий размер сходится удалить invisibleon Скриптовые языки администрирования Windows 16 12-10-2012 08:55
Debian/Ubuntu - Восстановление удалённых файлов на ext3 El Scorpio Общий по Linux 7 19-11-2011 21:53
Redhat/Fedora - Восстановление удалённых файлов в Red Hat 7. sergey1234567 Общий по Linux 6 23-10-2007 09:49




 
Переход