per Batch prüfen, ob Datei leer ist
gibt es eine Möglichkeit in DOS zu prüfen, ob eine Datei leer ist?
Je nachdem, ob die Datei leer ist oder nicht, soll sie anders behandelt werden.
Ich habe gehofft, dass ich über den Errorlevel vom TYPE-Befehl weiterkomme, aber dem ist leider nicht so.
Gruß
Content-ID: 115217
Url: https://administrator.de/contentid/115217
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
DOS ist so unpräzise.
Wenn du die cmd Shell eines aktuellen Windows meinst, geht das recht einfach.
@echo off
set Datei=test.txt
if exist "%Datei%" for %%A in (%Datei%) do if %%~zA GTR 0 echo %Datei% ist nicht leer, Groesse: %%~zA
Gruß
LotPings
[Edit] /f "delims=" falsch, rausgenommen[/Edit]
geringfügig variiert (FOR statt FOR/F) und auch für Dateien mit Leerzeichen im Namen tauglich:
@echo off & setlocal
:: 0-Byte-Datei erzeugen
type nul>"test mit space.txt"
set "Datei=test mit space.txt"
if exist "%Datei%" for %%A in ("%Datei%") do if %%~zA GTR 0 (
echo [%Datei%] ist nicht leer, Groesse:%%~zA
)
Grüße
Biber
@echo off
set Datei=test.txt
if Not exist "%Datei%" echo Datei %Datei% nicht vorhanden&goto :EOF
for %%A in (%Datei%) do if %%~zA GTR 0 (
echo %Datei% ist nicht leer, Groesse: %%~zA
) Else (
echo Datei %Datei% ist leer, 0 Bytes
)
Ich mach mal die Ingrid
na, da kommen aber lustige Sachen raus, wenn ich das bei mir anteste...
>for %i in ('dir "*.txt") do @dir "%i"|find "0 Byte">nul && @echo Leer %i [%~zi]
Leer 01000100..txt [8920]
Leer 0byte.txt
Leer allxxxFiles.txt [220]
Leer binfile.txt [4200]
Leer bla.txt
Leer bsp.txt [130]
Leer c0out.txt [16100]
Leer Datei2.txt [90]
Leer logfile.txt [60]
Leer modules.txt [4560]
Leer nerovista.txt [190]
Leer Paul3.txt [4560]
Leer SeptErg.txt
Leer systeminfo.txt [386970]
Leer test mit space.txt
Leer test97.txt [10]
Leer test98.txt [10]
Leer test99.txt [10]
Leer werte.txt [50]
Leer x.txt [370]
Aber sei beruhigt, ich habe heute schon in einem anderen Thread mit meinem Montag gekämpft....
Grüße
Biber
>dir "test.txt"|find "0 Byte" >NUL && echo leer || echo nicht leer
Datei nicht gefunden
nicht leer