frisconet
Goto Top

Batch - For Schleifen Ausgabe in Datei umleiten

Hallo Forum,
ich habe ein kleines Problem mit der Umleitung von dem Ergebnis einer For-Schliefe.
Ich habe mir eine Batch-Datei geschrieben um ein Verzeichnis auszulesen um die älteren Dateien zu löschen. Anschließend soll das Ergebnis in eine TXT Datei geschrieben / umgeleitet werden. Das funktioniert nur wenn nur eine Datei zu löschen da ist. Sollten es mehrere Dateien sein werden auch diese angezeigt und gelöscht aber nur eine wird in die Txt Datei geschrieben.
Gibt es eine Möglichkeit das so umzuschreiben das mir alle Dateien in die TXT Datei geschrieben werden.
Hier mein Code:

@echo off & setlocal
set Kopf=%temp%\Kopf.txt
>%Kopf% echo\
>>%Kopf% echo\
>>%Kopf% echo ==============================================
>>%Kopf% echo ----------------------------------------------
>>%Kopf% echo -  Filme Bereinigung beginnt. -
>>%Kopf% echo ----------------------------------------------
>>%Kopf% echo ==============================================
>>%Kopf% echo\
>>%Kopf% echo\
>>%Kopf% echo\

for /L %%A in (5,-1,0) do (
type %Kopf%
echo Suchvorgang wird gestartet
echo\
echo Wartezeit von %%A sekunden laeuft...
ping localhost -n 2 >nul
cls
)

type %Kopf%

set "Ordner=J:\HDD-Test"  
set "endung=*.ts"   
set "Anzahl=4"  
set "loesch=loesch.txt"  

for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%\%endung%"') do echo "%Ordner%\%%i" & echo "Geloescht am %date% - Datei= %Ordner%\%%i" > "%Ordner%\%loesch%" & set "loeschen=%Ordner%\%%i"  & del "%Ordner%\%%i"  

cls

Wenn ich meinen Code mit >> abändere (siehe unten) werden alle Dateien in die TXT Datei geschrieben. So möchte ich das aber nicht weil dann die Einträge am nächsten Tag dazu geschrieben werden. Ich möchte das jeden Tag nur die Dateien die gelöscht wurden eingeschrieben bekommen. Ich hoffe ich habe mich nicht zu verwirrend ausgedrückt.
echo "Geloescht am %date% - Datei= %Ordner%\%%i" >>"%Ordner%\%loesch%  
"
Vielen Dank für Eure Hilfe.

Gruß Jürgen

Content-ID: 670741

Url: https://administrator.de/forum/batch-for-schleifen-ausgabe-in-datei-umleiten-670741.html

Ausgedruckt am: 16.01.2025 um 19:01 Uhr

Delta9
Delta9 16.01.2025 um 16:50:12 Uhr
Goto Top
Hallo Jürgen,
warum das ganze nicht in Powershell?
Da ist es viel übersichtlicher als Batch mit seinen "Variablen".
gastric
Lösung gastric 16.01.2025 aktualisiert um 17:02:25 Uhr
Goto Top
@echo off & setlocal
set "Kopf=%temp%\Kopf.txt"  
>"%Kopf%" (  
echo.
echo ==============================================
echo ----------------------------------------------
echo -  Filme Bereinigung beginnt. -
echo ----------------------------------------------
echo ==============================================
echo.
echo.
echo.
)

for /L %%A in (5,-1,0) do (
	type %Kopf%
	echo Suchvorgang wird gestartet
	echo\
	echo Wartezeit von %%A sekunden laeuft...
	timeout /t 1 >nul
	cls
)

type %Kopf%

set "Ordner=J:\HDD-Test"    
set "endung=*.ts"     
set "Anzahl=4"    
set "loesch=loesch.txt"    

>"%Ordner%\%loesch%" 2>&1 (for /f "skip=%Anzahl% delims=" %%i in ('dir /b /a-d /o-d "%Ordner%\%endung%"') do (  
	echo "%Ordner%\%%i"  
	echo Geloescht am %date% - Datei= %Ordner%\%%i 
	del "%Ordner%\%%i"  
))
Frisconet
Frisconet 16.01.2025 um 17:01:29 Uhr
Goto Top
Hallo Delta9,
wie würde das denn aussehen?
gastric
gastric 16.01.2025 aktualisiert um 17:23:44 Uhr
Goto Top
wie würde das denn aussehen?
bsp.
Start-Transcript "J:\HDD-Test\loesch_$(get-date -f yyyyMMdd).txt"  
Get-ChildItem -Path "J:\HDD-Test" -File -Filter *.ts | sort LastWriteTime -Descending | select -Skip 4 | remove-item -force -verbose  
Stop-Transcript
Frisconet
Frisconet 16.01.2025 um 18:31:43 Uhr
Goto Top
Hallo gastric,

vielen lieben Dank für Deine Erklärung. Ich habe die Batch-Version genommen. Das funktioniert super gut.
Vielen Dank noch mal an alle.
Gruß Jürgen