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

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


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

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


mwz,
Цитата:
Не имеет ли смысл ли заменить сетевой путь на диск, например, Z:, командой net use Z: \\ts7\c$\users
А что в принципе изменится? После pushd мы присваиваем указанной папке букву диска (наманер net use или substr)
Вроде бы отрабатывает (во первых, при отладке делал echo %Drive%, во вторых, отработал правильно wmic: картиночка от palexa это подтвердила )
Уж если и танцевать с бубном, то, наверное, в for и del лучше оставить полные сетевые пути.

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

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

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



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

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


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


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

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


Для меня если честно подход админов какой то дикий
Я был системным админом, я вообще не заморачивался
Для каждого были квоты
Для браузера был размер установлен размер кеша
cron в линуксе выполнял всё что надо
и так далее, никто не мог выйти за рамки
Но увы, пришёл в колхоз, должен играть по правилам админа

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


Ветеран


Contributor


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

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


palexa, а уберите Вы мой for co всеми del и вставьте свой кусок из самого первого поста. Он, кстати, рабочий? Удаляет?
Если он рабочий, мои выкрутасы с определением места никак на него не повлияют

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

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

Отправлено: 01:11, 25-11-2018 | #23


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


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

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


Цитата megaloman:
Он, кстати, рабочий? Удаляет? »
рабочий, удаляет. проверял

Завтра проверю, потому что устал и буквы расплываются

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


Ветеран


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

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


Цитата mwz:
Не имеет ли смысл ли заменить сетевой путь на диск, например, Z:, командой net use Z: \\ts7\c$\users ? »
Так коллега megaloman как раз меняет — посредством pushd. Иначе %cd% давало бы не те результаты, что ожидалось.
Это сообщение посчитали полезным следующие участники:

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


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата megaloman:
Если размер измерять в миллионах байт а не мегабайтах, то вот чистый батник »
не забываем только, что в cmd оперировать можно только числами int32... т.е. от -2147483647 до 2147483647
Код: Выделить весь код
set /a res=2147483647+1
т.е. по сути до 2Gb, не более того...

Добавлено:
Понятно, что для обхода этой проблемы и откидываются шесть знаков. Но насколько это корректно? Учитывая, что из байтов мегабайты так не получить, ибо немного соответствие другое ...


Цитата palexa:
Я просто хочу немного автоматизировать свою работу »
Powershell присутствует? Вот его лучше уже применять, ибо возможности в целом несоизмеримы...

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 25-11-2018 в 13:15.


Отправлено: 10:13, 25-11-2018 | #26


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


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

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


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

Цитата megaloman:
уберите Вы мой for co всеми del и вставьте свой кусок из самого первого поста »


Код: Выделить весь код
@Echo Off
cls
	Set "NetPath=\\ts7\c$\users"
	Pushd "%NetPath%" || (
		Echo Wrong path "%NetPath%"
		Pause
		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 "\\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\*"
)

	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
	
	Echo Size2=%Size2%   FreeSpace2=%FreeSpace2%
	Echo Size1=%Size1%   FreeSpace1=%FreeSpace1%
	
	Set "Size=%Size1:~0,-6%" &If "%Size%"=="" Set /A Size=0
	Set "FreeSpace2=%FreeSpace2:~0,-6%" &If "%FreeSpace2%"=="" Set /A FreeSpace2=0
	Set "FreeSpace1=%FreeSpace1:~0,-6%" &If "%FreeSpace1%"=="" Set /A FreeSpace1=0

	Set /A Delta=%FreeSpace2%-%FreeSpace1%
	Echo Size=%Size%  Released=%FreeSpace2%-%FreeSpace1%=%Delta%
Pause
GoTo :Eof

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


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


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


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

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


По предыдущему посту видно, что хлам удаляется и размер считается верно, попробовал на нескольких серверах, полёт нормальный

Эти результаты
Echo Size2=%Size2% FreeSpace2=%FreeSpace2%
Echo Size1=%Size1% FreeSpace1=%FreeSpace1%

Можно сразу поделить на / 1024 / 1024 / 1024 и отправить в файл ?
В ГБ как то нагляднее смотрится

Числа ограничены 32 битами точности. Жаль, ну ладно

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


Отправлено: 15:04, 25-11-2018 | #28


Ветеран


Contributor


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

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


palexa,
Цитата palexa:
Можно сразу поделить на / 1024 / 1024 / 1024 и отправить в файл »
- Нельзя, ограничение разрядности чисел в CMD. Вообще-то Вы заказывали мегабайты, я сделал миллионы байт. Я придумал, как с хорошей точностью перейти от миллионов байт к мегабайтам. И уже мегабайты свести к гигабайтам делением на 1024
Пробуйте, пишите
Код: Выделить весь код
@Echo Off
cls
	Set "NetPath=\\ts7\C$\Users"
	Pushd "%NetPath%" || (
		Echo Wrong path "%NetPath%"
		Pause
		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 "%NetPath%\*" /a:d /b') do (
		del /s /q "%NetPath%\%%i\AppData\Local\Google\Chrome\User Data\Default\Cache\*"
		del /s /q "%NetPath%\%%i\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.MSO\*"
		del /s /q "%NetPath%\%%i\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\*"
		del /s /q "%NetPath%\%%i\AppData\Local\Microsoft\Windows\WER\*"
		del /s /q "%NetPath%\%%i\AppData\Local\Microsoft\Windows\Explorer\*"
		del /s /q "%NetPath%\%%i\AppData\Local\Temp\*"
		del /s /q "%NetPath%\%%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=               "
	Set "S0=%Space%%Size2%" &Set "S2=%Space%%FreeSpace2%" &Set "S1=%Space%%FreeSpace1%"

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

	Set "S0M=%Size1:~0,-6%" 
	If "%S0M%"=="" (Set /A S0M=0) Else (Set /A S0M=%S0M%-%S0M%/20)
	Set "S2M=%FreeSpace2:~0,-6%" 
	If "%S2M%"=="" (Set /A S2M=0) Else (Set /A S2M=%S2M%-%S2M%/20)
	Set "S1M=%FreeSpace1:~0,-6%"
	If "%S1M%"=="" (Set /A S1M=0) Else (Set /A S1M=%S1M%-%S1M%/20)

	Set /A Delta=%S2M%-%S1M%

	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 
	
	Set /A S0G=%S0M%/1024, S1G=%S1M%/1024, S2G=%S2M%/1024, Delta=%Delta%/1024 
	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 
Pause
GoTo :Eof
Думаю, записать в файл нужные строки не составит труда

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


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

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

Отправлено: 15:54, 25-11-2018 | #29


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


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

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


Думаю с точностью мы не угадаем, так что лучше пусть пока будет в байтах, а там посмотрим

429390819328 byte =Total size
398 Gbyte =Total size

429390819328 / 1024 / 1024 /1024 = 399.901 Gbyte

megaloman, Спасибо, за помощь.

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



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




 
Переход