Войти

Показать полную графическую версию : [решено] определить общий размер удалённых файлов скриптом


Страниц : [1] 2 3

palexa
23-11-2018, 20:59
Привет

Есть скрипт на 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

Помогите пожалуйста сделать так, что бы в конце был ответ сколько МБ было удалено
Если это конечно возможно и не сильно повлияет на скорость выполнения скрипта

Iska
23-11-2018, 21:53
Теоретически — можно. Практически — не имеет смысла сим заморачиваться. Это не WSH и не PoSH.

palexa
23-11-2018, 22:10
Приходится сначала смотреть место на диске, потом чистить и опять смотреть место, что бы сказать шефу сколько очистилось.
Жутко неудобно

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

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

palexa
23-11-2018, 22:54
я понял это, спасибо

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
*/

Iska
24-11-2018, 01:49
Гибрид bat и js. »
Кстати, да!

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

DJ Mogarych
24-11-2018, 12:01
robocopy [какая-то пустая папка] [папка с мусором] /e /purge /log+:[файл журнала]

В отчёте будет написано, сколько удалено. Далее можно крутить как угодно - слать отчёт по почте, фильтровать строки и т. п.

palexa
24-11-2018, 12:17
Что то я сильно перемудрил с задачей

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

А там написано до:
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$\

Iska
24-11-2018, 12:40
А мне надо по сети "\\ts7\C$\ »
Про то и речь.

palexa
24-11-2018, 12:53
Оказалось для выполнения скрипта на серваке не хватает прав (даже от имени администратора)
Результат не показывает
Бред какой то. Намутили что то

Ладно, спасибо

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
Попробуйте.

palexa
24-11-2018, 21:58
Спасибо, но думаю что то у меня с правами не так. Возможно не стоит этим заниматься.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный путь.
Не удалось найти указанный файл.
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

palexa
24-11-2018, 23:36
Цифры не понятные

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 ..........
Приложите получившийся файл к сообщению

palexa
25-11-2018, 00:13
возможно, но и удалять пока нечего. Я уже всё удалил :) Суббота, воскресенье

mwz
25-11-2018, 00:31
Set "NetPath=\\ts7\c$\users" »

Не имеет ли смысл ли заменить сетевой путь на диск, например, Z:, командой net use Z: \\ts7\c$\users ?

palexa
25-11-2018, 00:51
Скопировал, не удаляется

palexa
25-11-2018, 00:56
Не имеет ли смысл ли заменить сетевой путь на диск, например, Z:, командой net use Z: \\ts7\c$\users ? »
Не я устанавливаю правила
Я просто хочу немного автоматизировать свою работу
Считаю место
записываю в файл размер
Удаляю кеш, дописываю в файл размер
Считаю разницу до и после, дописываю в файл сколько удплил
Отправляю файл на почту заинтересованным лицам




© OSzone.net 2001-2012