115129
Goto Top

Verzeichnis auf min-max in MB zu überwachen und Dateien zu löschen

Hallo zusammen,

diesen Quellcode nutze ich im Moment, um das Verzeichnis "C:\TEST" auf eine maximale Anzahl von Dateien abzufragen und falls zu viele vorhanden sind auf den Minimalwert zu löschen.
Set "Dir_01=C:\TEST"  
Set "Dir_01_min=50"  
Set "Dir_01_max=77"  

if defined Dir_01 for /f %%i in ('dir /a-d /b "%Dir_01%\*.*"^|find /c /v ""') do if %%i gtr %Dir_01_max% (  
  for /f "skip=%Dir_01_min% delims=" %%j in ('dir /a-d /b /o-d "%Dir_01%\*.*"') do del "%Dir_01%\%%j"  
)

goto :eof


Nun möchte ich aber das Verzeichnis "C:\TEST" anstatt auf min-max-Anzahl, auf die Verzeichnisgröße in MB abfragen.


Diesen Quellcode hatte ich noch gefunden, mit dem der Inhalt von Verzeichnis "C:\TEST" nach "D:\TEST" verschoben werden kann, sofern der Speicherplatz auf "D:\TEST" ausreicht. Kann das integrierte VB-Skript in meine Anwendung integriert werden?
set "SrcPath=C:\TEST"  
set "DstPath=D:\TEST"  
set "VBScript=%TEMP%\DestFitsSize.vbs"  
> "%VBScript%" echo Set objFSO = CreateObject("Scripting.FileSystemObject")  
>>"%VBScript%" echo.  
>>"%VBScript%" echo strSrcPath = WScript.Arguments(0)  
>>"%VBScript%" echo strDstPath = WScript.Arguments(1)  
>>"%VBScript%" echo.  
>>"%VBScript%" echo dblSrcSize = objFSO.GetFolder(strSrcPath).Size  
>>"%VBScript%" echo dblDstSize = objFSO.GetDrive(objFSO.GetDriveName(strDstPath)).FreeSpace  
>>"%VBScript%" echo.  
>>"%VBScript%" echo If dblDstSize ^> dblSrcSize Then  
>>"%VBScript%" echo   WScript.Quit 0  
>>"%VBScript%" echo Else  
>>"%VBScript%" echo   WScript.Quit 1  
>>"%VBScript%" echo End If  
if not exist "%DstPath%" goto :Terminate  
cscript /nologo "%VBScript%" "%SrcPath%" "%DstPath%" || goto :Terminate  
for %%i in ("%SrcPath%\*.*") do move "%%i" "%DstPath%"  
del "%VBScript%"  
:End
goto :eof

Vielen Dank schonmal.

Gruß,
Blattlaus

Content-Key: 368938

Url: https://administrator.de/contentid/368938

Ausgedruckt am: 19.03.2024 um 08:03 Uhr

Mitglied: 135799
135799 22.03.2018 aktualisiert um 16:52:10 Uhr
Goto Top
@echo off
powershell -Exe Bypass -C "if ((gci 'C:\TEST' -Recurse -Force -EA SilentlyContinue | measure Length -Sum).Sum -gt (gwmi win32_LogicalDisk -Filter \"DeviceId='D:'\").Freespace){write-host 'Not enough free space!'"}  
Schnuffi
Mitglied: 115129
115129 22.03.2018, aktualisiert am 23.03.2018 um 11:54:36 Uhr
Goto Top
Hallo Schnuffi.

Ich möchte lediglich mein erstes Script beibehalten, es soll allerdings anstatt des Anzahlvergleichs ein Verzeichnisgrößenvergleich in Megabyte durchgeführt werden, ist eine zu hohe Datenmenge vorhanden, sollen die ältesten Dateien bzw. Verzeichnisse bis zum Minimalwert in Megabyte gelöscht werden.

Gruß,
Blattlaus