115129
22.03.2018
796
2
0
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.
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?
Vielen Dank schonmal.
Gruß,
Blattlaus
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 368938
Url: https://administrator.de/contentid/368938
Ausgedruckt am: 19.03.2024 um 08:03 Uhr
2 Kommentare
Neuester Kommentar
@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!'"}