Batch

2012-06-27 15 views
10

'da bir dosyanın boş olup olmadığını nasıl kontrol edebilirim Bir dosyanın boş olup olmadığını kontrol etmek için google atar bir kaç yolu vardır ama tam tersini yapmam gerekiyor.Batch

If (file is NOT empty) 

do things 

Bunu toplu olarak nasıl yaparım? Komut satırında

cevap

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

döndürür: >> beklenmedik 0 – Tertium

+0

@Tertium - Düzeltme, 'for' döngüsünden önce satırda 'set boyutu = 0' eklemektir. –

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

Tip help for bu çalışması gerekir

7

~ zA bölümü hakkında açıklamalar var:

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

help if Eğer ters doğrudan if sonra NOT ekleyebilir söylüyor Karşılaştırma bildirimi

+0

, aşağıdaki gibi bir Anahtar olmamalıdır: %% R için (test.dat), %% ~ zR EQU 0 yankısı boş değil – Christian4145

2

Bu sorunu tam

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

yourScript.bat notEmpty.bat Alternatif

@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) 

çözmek yararlı parameter modifiers almak/dış toplu dosya altyordamlarını yararlanabilirim

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