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

Компьютерный форум 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

 

Ветеран


Contributor


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

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


palexa, Я не гадаю с точностью.
1000*1000=1000000
1024*1024=1048576
То есть отличие составляет ~5% (то есть 1/20 часть от результата)
В CMD нет дробей. Поэтому, если я из миллионов байт получаю мегабайты путём:
млн-млн/20
Погрешность результата составляет 0.2%
Покажите, как отработал вывод в моём последнем варианте. Интересно посравнивать числа при ручных подсчетах и то, что я выдаю

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


Отправлено: 16:48, 25-11-2018 | #31



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

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


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


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

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


392690659328 byte =Total size
96284807168 byte =Free space before releasing
96756871168 byte =Free space after releasing

373056 Mbyte =Total size
91919 Mbyte =Free space after releasing
91470 Mbyte =Free space before releasing
449 Mbyte =Space released

364 Gbyte =Total size
89 Gbyte =Free space after releasing
89 Gbyte =Free space before releasing
0 Gbyte =Space released

Отправлено: 16:59, 25-11-2018 | #32


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


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

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


Изображения
Тип файла: jpg 1.jpg
(17.1 Kb, 5 просмотров)

Скрин после очистки

Отправлено: 17:05, 25-11-2018 | #33


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


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

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


Вот скрин на всякий случай до и после


207799447552 byte =Total size
92909678592 byte =Free space before releasing
95596863488 byte =Free space after releasing
-
197410 Mbyte =Total size
90817 Mbyte =Free space after releasing
88264 Mbyte =Free space before releasing
2553 Mbyte =Space released
-
192 Gbyte =Total size
88 Gbyte =Free space after releasing
86 Gbyte =Free space before releasing
2 Gbyte =Space released

Отправлено: 17:59, 25-11-2018 | #34


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


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

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


Если сервер не найден, то пишет

Сетевой путь не найден.
Wrong path "\\ts7\C$\Users"
Press any key to continue . . .

Как этого избежать, что бы в этом случае батник показал инфу и закрылся
Если я правильно понял закоментровать
Echo Wrong path "%NetPath%"
rem Pause

(а ещё лучше записал эту инфу в указанный файл)

Последний раз редактировалось palexa, 25-11-2018 в 20:49.


Отправлено: 20:44, 25-11-2018 | #35


Ветеран


Contributor


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

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


palexa, Вы как-то помянули несколько серверов. Учел. Можете прописать несколько серверов (или один).
Кроме того, решил вернуться к гибриду cmd+js. На js написан калькулятор пересчета. Получаем правильные числа.
Показал возможность формирования log-файла. Сейчас в имени датавремя запуска файла Z:\ГГГГММДДччммсс.log (пропишите свой диск). Можете придумать другое имя.
Закомментируйте вывод результатов, которые Вам не интересны.
Пробуйте, пишите
Код: Выделить весь код
@set @E=1; /*

@Echo Off
cls
	Set NetPath="\\Server1\c$\users" "\\ts7\C$\Users" "\\Server2\c$\users"

	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"
	Set "LogFile=Z:\%@Tdate:~0,14%.log"

	>"%LogFile%" 2>&1 (FOR %%p IN (%NetPath%) DO (
		Call :ProtoDel "%%~p"
	))

rem	FOR %%p IN (%NetPath%) DO (
rem		Call :ProtoDel "%%~p"
rem	)
rem Pause
GoTo :Eof

:ProtoDel
	Echo ++++++++++ %Date% %Time% "%~1"
	Pushd "%~1" || (
		Echo Wrong path "%~1"
		GoTo :Eof
	)
	FOR /F "usebackq delims=\" %%n IN (`cd`) DO Set "Drive=%%n"

	FOR /F "usebackq tokens=1,2 delims= " %%i IN (`"wmic logicaldisk where caption="%Drive%" Get FreeSpace,Size,VolumeName"`) DO If Not "%%j"=="" (Set "FreeSpace=%%i" &Set "Size=%%j")
	Set "Size1=%Size%" &	Set "FreeSpace1=%FreeSpace%"

	for /f "delims=" %%i in ('dir "%~1\*" /a:d /b') do (
		>nul 2>&1 del /s /q "%~1\%%i\AppData\Local\Google\Chrome\User Data\Default\Cache\*"
		>nul 2>&1 del /s /q "%~1\%%i\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.MSO\*"
		>nul 2>&1 del /s /q "%~1\%%i\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\*"
		>nul 2>&1 del /s /q "%~1\%%i\AppData\Local\Microsoft\Windows\WER\*"
		>nul 2>&1 del /s /q "%~1\%%i\AppData\Local\Microsoft\Windows\Explorer\*"
		>nul 2>&1 del /s /q "%~1\%%i\AppData\Local\Temp\*"
		>nul 2>&1 del /s /q "%~1\%%i\Downloads\*"
	)

	FOR /F "usebackq tokens=1,2 delims= " %%i IN (`"wmic logicaldisk where caption="%Drive%" Get FreeSpace,Size,VolumeName"`) DO If Not "%%j"=="" (Set "FreeSpace=%%i" &Set "Size=%%j")
	Set "Size2=%Size%" &Set "FreeSpace2=%FreeSpace%"

	Popd
	
	Set "Space=               "
	Call :SizeDiff 0 0 %FreeSpace1% %FreeSpace2% "Delta"

	Set "S0=%Space%%Size2%" &Set "S2=%Space%%FreeSpace2%" &Set "S1=%Space%%FreeSpace1%" &Set "SD=%Space%%Delta%"

	Echo %S0:~-15% byte  =Total size 
	Echo %S1:~-15% byte  =Free space before releasing 
	Echo %S2:~-15% byte  =Free space  after releasing 
	Echo %SD:~-15% byte  =Space released 

	Call :Size 2 1 %Size1% "S0M"
	Call :Size 2 1 %FreeSpace2% "S2M" 
	Call :Size 2 1 %FreeSpace1% "S1M" 
	Call :SizeDiff 2 1 %FreeSpace1% %FreeSpace2% "Delta"

	Set "S0=%Space%%S0M%" &Set "S2=%Space%%S2M%" &Set "S1=%Space%%S1M%" &Set "SD=%Space%%Delta%"

	Echo %S0:~-9% Mbyte  =Total size 
	Echo %S2:~-9% Mbyte  =Free space  after releasing 
	Echo %S1:~-9% Mbyte  =Free space before releasing 
	Echo %SD:~-9% Mbyte  =Space released 

	Call :Size 3 2 %Size1% "S0G"
	Call :Size 3 2 %FreeSpace2% "S2G" 
	Call :Size 3 2 %FreeSpace1% "S1G" 
	Call :SizeDiff 3 2 %FreeSpace1% %FreeSpace2% "Delta"
	
	Set "S0=%Space%%S0G%" &Set "S2=%Space%%S2G%" &Set "S1=%Space%%S1G%" &Set "SD=%Space%%Delta%"

	Echo %S0:~-6% Gbyte  =Total size 
	Echo %S2:~-6% Gbyte  =Free space  after releasing 
	Echo %S1:~-6% Gbyte  =Free space before releasing 
	Echo %SD:~-6% Gbyte  =Space released 
GoTo :Eof

rem Перевод байтов в
rem %1 =0 в байты
rem %1 =1 в Кбайты
rem %1 =2 в Мбайты
rem %1 =3 в Гбайты
rem %1 =4 в Тбайты
rem %2 число знаков в дробной части
rem %3 исходное число (байт)
rem %4 "идентификатор" переменной которой присваивается результат
:Size
	FOR /F "usebackq delims=" %%i IN (`Cscript //NoLogo /E:jscript "%~dpnx0" %1 %2 %3`) DO Set "%~4=%%i"
GoTo :Eof

rem Вычисление разности двух величин в байтах
rem %1 =0 в байты
rem %1 =1 в Кбайты
rem %1 =2 в Мбайты
rem %1 =3 в Гбайты
rem %1 =4 в Тбайты
rem %2 число знаков в дробной части
rem %3 первое исходное число (байт)
rem %4 второе исходное число (байт)
rem %5 "идентификатор" переменной которой присваивается результат %2-%1
:SizeDiff
	FOR /F "usebackq delims=" %%i IN (`Cscript //NoLogo /E:jscript "%~dpnx0" %1 %2 %3 %4`) DO Set "%~5=%%i"
GoTo :Eof

*/

var oArg = WScript.Arguments;
var nArg=oArg.Count(); 

if (nArg>2) {
	var k=1;
	if (oArg(0)==1) k=1024;
	if (oArg(0)==2) k=1024*1024;
	if (oArg(0)==3) k=1024*1024*1024;
	if (oArg(0)==4) k=1024*1024*1024*1024;
}
if (nArg==3) {
	var i=oArg(2)/k;
	WScript.Echo(i.toFixed(oArg(1)));
	WScript.Quit(0);
}
if (nArg==4) {
	var i=(oArg(3)-oArg(2))/k;
	WScript.Echo(i.toFixed(oArg(1)));
	WScript.Quit(0);
}
WScript.Echo("Error!_Invalid_number_of_arguments!");
WScript.Quit(1);

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


Последний раз редактировалось megaloman, 25-11-2018 в 21:52.

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

Отправлено: 21:45, 25-11-2018 | #36


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


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

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


Что то у меня с этими гибридами не складывается или что то не так с правами или не знаю

Но меня в принципе устроил последний вариант в cmd

Код: Выделить весь код
@Echo Off

rem Удаляет (считает) и дописывает результаты в файл-лог

Call \\fs\ts7.bat
Call \\fs\ts8.bat
Call \\fs\ts9.bat
Call \\fs\ts10.bat
Call \\fs\ts11.bat
Call \\fs\ts12.bat

rem отправляет файл-лог на почту
wscript \\fs\mail.vbs

rem ну и на всякий случай удаляет файл-лог
Call \\fs\del.bat

GoTo :Eof
Может не супер точно считает, но этого достаточно, главное есть отчёт что задача выполнена

Так что спасибо большое

Цитата palexa:
Что то у меня с этими гибридами не складывается или что то не так с правами или не знаю »
пусть немного похламяться пользователи, попробую
А пока только маленький результ о том что вроде считает точно

Код: Выделить весь код
++++++++++ 25.11.2018 21:22:17,57 "\\ts9\c$\users"
   207799447552 byte  =Total size 
    95407751168 byte  =Free space before releasing 
    95407751168 byte  =Free space  after releasing 
              0 byte  =Space released 
 198173.0 Mbyte  =Total size 
  90987.9 Mbyte  =Free space  after releasing 
  90987.9 Mbyte  =Free space before releasing 
      0.0 Mbyte  =Space released 
193.53 Gbyte  =Total size 
 88.86 Gbyte  =Free space  after releasing 
 88.86 Gbyte  =Free space before releasing 
  0.00 Gbyte  =Space released 
++++++++++ 25.11.2018 21:22:19,72 "\\ts10\C$\Users"
   429390819328 byte  =Total size 
    62527762432 byte  =Free space before releasing 
    62528274432 byte  =Free space  after releasing 
         512000 byte  =Space released 
 409499.0 Mbyte  =Total size 
  59631.6 Mbyte  =Free space  after releasing 
  59631.1 Mbyte  =Free space before releasing 
      0.5 Mbyte  =Space released 
399.90 Gbyte  =Total size 
 58.23 Gbyte  =Free space  after releasing 
 58.23 Gbyte  =Free space before releasing 
  0.00 Gbyte  =Space released 
++++++++++ 25.11.2018 21:22:35,00 "\\ts11\c$\users"
   207799447552 byte  =Total size 
    64473739264 byte  =Free space before releasing 
    64474161152 byte  =Free space  after releasing 
         421888 byte  =Space released 
 198173.0 Mbyte  =Total size 
  61487.4 Mbyte  =Free space  after releasing 
  61486.9 Mbyte  =Free space before releasing 
      0.4 Mbyte  =Space released 
193.53 Gbyte  =Total size 
 60.05 Gbyte  =Free space  after releasing 
 60.05 Gbyte  =Free space before releasing 
  0.00 Gbyte  =Space released

Отправлено: 22:16, 25-11-2018 | #37


Ветеран


Contributor


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

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


Цитата palexa:
меня с этими гибридами не складывается »
Вы меня ужасаете. Что не сложилось? Вроде лог файл красивый. Явно данных много. Надо оставить 4 строки в одних единицах измерения

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


Отправлено: 22:31, 25-11-2018 | #38


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


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

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


Цитата megaloman:
Вы меня ужасаете. Что не сложилось? »
Это я тупил

Отправлено: 22:46, 25-11-2018 | #39


Ветеран


Contributor


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

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


palexa, остаётся переписать vbs отправку на почту в js, чтобы объединить всё в одном файле. Но это я уже глумлюсь. Хотя в каждой шутке ....

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


Отправлено: 22:59, 25-11-2018 | #40



Компьютерный форум 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




 
Переход