Как проверить, не пуст ли файл в пакете

Есть несколько способов, по которым google бросает меня для проверки, является ли файл пустым, но мне нужно сделать обратное.

If (file is NOT empty)

do things

Как мне сделать это в пакетном режиме?

Ответ 1

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

Ответ 2

это должно работать:

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

help if говорит, что вы можете добавить NOT непосредственно после if, чтобы инвертировать оператор сравнения

Ответ 3

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

Введите help for в командной строке, чтобы получить объяснения относительно части ~ zA

Ответ 4

Вы можете использовать подпрограммы/внешние командные файлы, чтобы получить полезные модификаторы параметров, которые решают эту точную проблему.

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

В качестве альтернативы

notEmpty.bat

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

yourScript.bat

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