Ответ 1
for /f %%i in ("file.txt") do set size=%%~zi
if %size% gtr 0 echo Not empty
Есть несколько способов, по которым google бросает меня для проверки, является ли файл пустым, но мне нужно сделать обратное.
If (file is NOT empty)
do things
Как мне сделать это в пакетном режиме?
for /f %%i in ("file.txt") do set size=%%~zi
if %size% gtr 0 echo Not empty
это должно работать:
for %%R in (test.dat) do if not %%~zR lss 1 echo not empty
help if
говорит, что вы можете добавить NOT
непосредственно после if
, чтобы инвертировать оператор сравнения
set "filter=*.txt"
for %%A in (%filter%) do if %%~zA==0 echo."%%A" is empty
Введите help for
в командной строке, чтобы получить объяснения относительно части ~ zA
Вы можете использовать подпрограммы/внешние командные файлы, чтобы получить полезные модификаторы параметров, которые решают эту точную проблему.
@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
)