Показать полную графическую версию : [решено] определить общий размер удалённых файлов скриптом
Привет
Есть скрипт на 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
Помогите пожалуйста сделать так, что бы в конце был ответ сколько МБ было удалено
Если это конечно возможно и не сильно повлияет на скорость выполнения скрипта
Теоретически — можно. Практически — не имеет смысла сим заморачиваться. Это не WSH и не PoSH.
Приходится сначала смотреть место на диске, потом чистить и опять смотреть место, что бы сказать шефу сколько очистилось.
Жутко неудобно
ну не имеет так не имеет
palexa, дело в том, что нет в пакетных файлах простого и незатейливого способа для осуществления озвученного (в отличие от WSH/PoSH).
megaloman
24-11-2018, 00:47
palexa, @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
*/
Гибрид bat и js. »
Кстати, да!
Приходится сначала смотреть место на диске, потом чистить и опять смотреть место, что бы сказать шефу сколько очистилось. »
1. я вас удивлю, но занятое место как правило больше суммарного объёма файлов
2. какая-то регулярная профилактика - дело благое, но то, что вы делаете - профанация: кэши браузеров разрастутся обратно. В загрузках обычно лежит то, что нужно пользователю - вы бы ещё Рабочий стол "почистили". Хотя бы отбивку по времени сделайте.
DJ Mogarych
24-11-2018, 12:01
robocopy [какая-то пустая папка] [папка с мусором] /e /purge /log+:[файл журнала]
В отчёте будет написано, сколько удалено. Далее можно крутить как угодно - слать отчёт по почте, фильтровать строки и т. п.
Что то я сильно перемудрил с задачей
Ведь по сути мне надо знать, то что написано на диске до и после выполнения чистки, когда открываешь "Мой компьютер"
А там написано до:
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$\
А мне надо по сети "\\ts7\C$\ »
Про то и речь.
Оказалось для выполнения скрипта на серваке не хватает прав (даже от имени администратора)
Результат не показывает
Бред какой то. Намутили что то
Ладно, спасибо
megaloman
24-11-2018, 20:48
palexa, @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 ('2^>nul Dir %Drive%\ /a:d /b') Do (
del /s /q "%Drive%\%%i\AppData\Local\Google\Chrome\User Data\Default\Cache\*"
del /s /q "%Drive%\%%i\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.MSO\*"
del /s /q "%Drive%\%%i\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\*"
del /s /q "%Drive%\%%i\AppData\Local\Microsoft\Windows\WER\*"
del /s /q "%Drive%\%%i\AppData\Local\Microsoft\Windows\Explorer\*"
del /s /q "%Drive%\%%i\AppData\Local\Temp\*"
del /s /q "%Drive%\%%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
Попробуйте.
Спасибо, но думаю что то у меня с правами не так. Возможно не стоит этим заниматься.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Size2=207799447552 FreeSpace2=63998238720
Size1=207799447552 FreeSpace1=63998238720
Size=207799 Released=63998-63998=0
Press any key to continue . . .
Что есть что не понятно
Size2=207799447552 FreeSpace2=63998238720
Size1=207799447552 FreeSpace1=63998238720
Size=207799 Released=63998-63998=0
megaloman
25-11-2018, 00:02
palexa, 80685862912/1024/1024/1024=75.1Г
208197906432/1024/1024/1024=194Г, несовпадение в последней цифре - ошибки округления
То есть объем определяется верно
Надо разбираться с удалением.
Может, в пути возникает имя с символами, не предусмотренные 866 кодировкой.
Для отладки измените код перед каждым del
>>с:\outfile.txt 2>&1 echo del ..........
Приложите получившийся файл к сообщению
возможно, но и удалять пока нечего. Я уже всё удалил :) Суббота, воскресенье
Set "NetPath=\\ts7\c$\users" »
Не имеет ли смысл ли заменить сетевой путь на диск, например, Z:, командой net use Z: \\ts7\c$\users ?
Не имеет ли смысл ли заменить сетевой путь на диск, например, Z:, командой net use Z: \\ts7\c$\users ? »
Не я устанавливаю правила
Я просто хочу немного автоматизировать свою работу
Считаю место
записываю в файл размер
Удаляю кеш, дописываю в файл размер
Считаю разницу до и после, дописываю в файл сколько удплил
Отправляю файл на почту заинтересованным лицам
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.