Имя пользователя:
Пароль:
 | Правила  

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

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

Новый участник


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

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


Здравствуйте, как проверить размер занимаемого места на разделе для определенной папки, и если он превышает лимит - удалить папку минуя корзину?

Код: Выделить весь код
@echo off

if not exist "c:\_acestream_cache_\" (
exit
)

<--- Если размер больше 100 gb --->

RD /s/q "c:\_acestream_cache_\"
del /f /q %appdata%\.ACEStream\buffer\*.*
::del /f /q %appdata%\.ACEStream\collected_torrent_files\*.*
del /f /q %appdata%\.ACEStream\dlcheckpoints\*.*
del /f /q %appdata%\.ACEStream\dldcheckpoints\*.*
del /f /q %appdata%\.ACEStream\*.log

exit

Отправлено: 23:29, 31-10-2015

 

Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal

for /f "tokens=1" %%i in ('dfp "C:\Folder" /s') do set "size=%%i"
if %size% geq 107374182400 rd /s /q "C:\Folder"
Должно работать на 8-ке и 10-ке. Не знаю есть ли dfp.exe в предыдущих версиях.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:46, 31-10-2015 | #2



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

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


Ветеран


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

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


Цитата Foreigner:
Не знаю есть ли dfp.exe в предыдущих версиях. »
Немае .


А сработает ли сравнение как числовое? В ранних версиях были ограничения 2^32-1, помнится.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:03, 01-11-2015 | #3


Ветеран


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

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


Iska, Точно, не работает, надо нули добавлять в начало (я сравнивал равное кол-во знаков 400Gb co 100Gb):
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=1" %%i in ('dfp "C:\Folder" /s') do set "size=000000000000%%i"

if %size:~-12% geq 107374182400 rd /s /q "C:\Folder"
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:15, 01-11-2015 | #4


Ветеран


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

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


Foreigner, ещё один возможный подводный камень — не попытается ли «if» воспринимать некоторые строки, начинающиеся с «0…», как восьмеричные (не проверял)?
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:59, 01-11-2015 | #5


Ветеран


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

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


Iska,
Цитата Iska:
воспринимать некоторые строки, начинающиеся с «0…», как восьмеричные »
В самом вопросе противоречие. При равной длине строк сравнение будет корректным, т.к коды символов идут подряд:
Код: Выделить весь код
0..9 | % { [int][char]"$_" }   #  48..57
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:43, 01-11-2015 | #6


Новый участник


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

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


Цитата Foreigner:
Должно работать на 8-ке и 10-ке. Не знаю есть ли dfp.exe в предыдущих версиях. »
Windows 7: "dfp" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

Отправлено: 15:03, 01-11-2015 | #7


Ветеран


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

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


fokanik, попробуйте на WSH (не проверялось):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFolder
Dim strACEStreamFolderInAppData
Dim strTemplate


With WScript.CreateObject("Scripting.FileSystemObject")
	strSourceFolder = "c:\_acestream_cache_"
	
	If .FolderExists(strSourceFolder) Then
		.DeleteFolder strSourceFolder, True
		
		strACEStreamFolderInAppData = .BuildPath(WScript.CreateObject("Shell.Application").NameSpace("shell:AppData").self.Path, ".ACEStream")
		
		For Each strTemplate In Array( _
			"buffer\*.*", _
			"dlcheckpoints\*.*", _
			"dldcheckpoints\*.*", _
			"*.log" _
		)
			.DeleteFile objFSO.BuildPath(strACEStreamFolderInAppData, strTemplate), True
		Next
	Else
		' Nothing to do
	End If
End With

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

Отправлено: 16:10, 01-11-2015 | #8


Забанен


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

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


fokanik, дык Вы бы сразу озвучили версию системы. Можно попытать счастья такой командой:
Код: Выделить весь код
@powershell /nop /ex bypass "&{if((ls -r($$='C:\Folder')|?{!$_.PSIsContainer}|measure -pr length -s).Sum -ge 100Gb){ri $$ -for}}"
Если не нравится вызывать из консоли posh, можно прибегнуть к утонченным извращениям с robocopy, благо в семерке он поставляется в комплекте; нужно обратить внимание на ключи /L, /MAX и, если память не изменяет, /MIR. Если подобный садомизм не для Вас, можно пойти по пути пролетариата гибридов: cmd+mshta, cmd+javascript и дыр и пыр в этом пирдухе.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:11, 01-11-2015 | #9


Новый участник


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

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


Цитата Iska:
fokanik, попробуйте на WSH (не проверялось): »
Не знаю как это запускается.

Цитата greg zakharov:
Можно попытать счастья такой командой: »
Закинул эту строчку в батник, работает, спасибо Дыр, пир, mir - не треба.

Отправлено: 16:56, 01-11-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Выполнить А если размер файла с логом 0 и В если размер больше 0 AlexxBross Скриптовые языки администрирования Windows 4 16-10-2013 14:14
CMD/BAT - BAT файлом сравнить ряд файлов по размеру - если общий размер сходится удалить invisibleon Скриптовые языки администрирования Windows 16 12-10-2012 08:55
CMD/BAT - [решено] Если файл больше 300 мб то удалить его jannaly Скриптовые языки администрирования Windows 7 17-07-2012 15:29
VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её T3D Скриптовые языки администрирования Windows 12 18-01-2011 17:58
Удалить папку, если на её место примонтирован раздел Gangabass Общий по Linux 16 01-03-2007 08:06




 
Переход