Code in der CMD läuffähig, als batch nicht
Hallo zusammen,
ich bin in CMD und batch Neuling, leider kann ich kein Powershell nutzen.
Ich will in einem Ornder alle Daten älter als eine Woche löschen (später in Aufgabenplanung), wenn der Speicher weniger als 50% ist.
Mein Code funktioniert, wenn ich es Zeilenweise in die CMD eingebe. Erstelle ich eine batch, wird nichts ausgeführt. Ich hab gelesen, das Variablen mit %% gekennzeichnet werden müssen. Das habe ich getan, dennoch in der batch keine Reaktion. Kann mir hier jemand helfen?
ich bin in CMD und batch Neuling, leider kann ich kein Powershell nutzen.
Ich will in einem Ornder alle Daten älter als eine Woche löschen (später in Aufgabenplanung), wenn der Speicher weniger als 50% ist.
Mein Code funktioniert, wenn ich es Zeilenweise in die CMD eingebe. Erstelle ich eine batch, wird nichts ausgeführt. Ich hab gelesen, das Variablen mit %% gekennzeichnet werden müssen. Das habe ich getan, dennoch in der batch keine Reaktion. Kann mir hier jemand helfen?
@echo off
REM Laufwerk
SET "drive=C:"
REM Ordnerpfad
SET "folder=C:\User\Downloads"
REM Prozent restspeicher Marke
SET "percent=50"
REM Zeitraumbegrenzung
SET "days=7"
REM Zahlen abschneiden auf 4 Stellen
SET New_StrLength=4
REM Ermitteln FREIER Speicher D:
@for %%a in (%drive%) do @for /f "tokens=3" %i in ('dir /-c %%a^:^|find /i "Bytes fre"') do set drive_free=%%i
REM Ergebnis abschneiden, erste 4 Stellen
call set drive_free=%drive_free:~0,^%New_StrLength%%
REM Ermitteln GESAMTER Speicher D:
SET drive_size=
@for /f "skip=1 delims=" %%A in ('wmic logicaldisk where DeviceID^="D:" get size') do (if not defined drive_size set "drive_size=%%A")
REM Ergebnis abschneiden, erste 4 Stellen
call set drive_size=%drive_size:~0,^%New_StrLength%%
REM nun die gerundete Zahl Gesamtspeicher auf 20 Prozent rechnen
set /a result=(drive_size/100)*%percent%
echo Size: %drive_size%
echo Free: %drive_free%
echo Erg: %result%
REM Überprüfen, ob der verfügbare Speicherplatz unterhalb der Schwelle liegt
if %result% lss %drive_free% (
REM Löschen von Dateien, die älter als 14 Tage sind
forfiles /p "%folder%" /s /m * /d -%days% /c "cmd /c if @isdir==FALSE del @path"
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7263974834
Url: https://administrator.de/contentid/7263974834
Ausgedruckt am: 05.11.2024 um 02:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo SouthTom,
erstens:
zweitens:
siehe auch How-to: Extract part of a variable (substring)
Grüße
erstens:
19 @for %%a in (%drive%) do @for /f "tokens=3" %%i in ('dir /-c %%a^:^|find /i "Bytes fre"') do set drive_free=%%i
zweitens:
21 call set drive_free=%%drive_free:~0,%New_StrLength%%%
27 call set drive_size=%%drive_size:~0,%New_StrLength%%%
27 call set drive_size=%%drive_size:~0,%New_StrLength%%%
siehe auch How-to: Extract part of a variable (substring)
Grüße