2012-06-27 6 views

Antwort

18
for /f %%i in ("file.txt") do set size=%%~zi 
if %size% gtr 0 echo Not empty 
+0

gibt zurück: >> unerwartet 0 – Tertium

+0

@Tertium - Die Lösung besteht darin, 'set size = 0 'in die Zeile vor der' for'-Schleife einzufügen. –

2
set "filter=*.txt" 
for %%A in (%filter%) do if %%~zA==0 echo."%%A" is empty 

Typ help for in einer Befehlszeile Erklärungen über den ~ zA Teil haben

7

dies funktionieren soll:

for %%R in (test.dat) do if not %%~zR lss 1 echo not empty 

help if sagt, dass Sie die NOT direkt nach den if hinzufügen zu invertieren die Vergleichserklärung

+0

sollte nicht ein Schalter nach sein, wenn wie: für %% R in (test.dat) tun, wenn/i nicht %% ~ zR EQU 0 echo nicht leer – Christian4145

2

Sie können Subroutinen/externe Batch-Dateien nutzen, um nützliche parameter modifiers zu erhalten, die genau dieses Problem

@Echo OFF 
(Call :notEmpty file.txt && (
    Echo the file is not empty 
)) || (
    Echo the file is empty 
) 
::exit script, you can `goto :eof` if you prefer that 
Exit /B 


::subroutine 
:notEmpty 
If %~z1 EQU 0 (Exit /B 1) Else (Exit /B 0) 

Alternativ

notEmpty.bat

@Echo OFF 
If %~z1 EQU 0 (Exit /B 1) Else (Exit /B 0) 

yourScript.bat lösen

Call notEmpty.bat file.txt 
If %errorlevel% EQU 0 (
    Echo the file is not empty 
) Else (
    Echo the file is empty 
) 
Verwandte Themen