Hay varias maneras en que google me lanza para comprobar si un archivo está vacío, pero tengo que hacer lo contrario.Cómo comprobar si un archivo no está vacío en el lote
If (file is NOT empty)
do things
¿Cómo puedo hacer esto en un lote?
Hay varias maneras en que google me lanza para comprobar si un archivo está vacío, pero tengo que hacer lo contrario.Cómo comprobar si un archivo no está vacío en el lote
If (file is NOT empty)
do things
¿Cómo puedo hacer esto en un lote?
for /f %%i in ("file.txt") do set size=%%~zi
if %size% gtr 0 echo Not empty
set "filter=*.txt"
for %%A in (%filter%) do if %%~zA==0 echo."%%A" is empty
Tipo help for
en una línea de comandos para tener explicaciones sobre la parte ~ zA
esto debería funcionar:
for %%R in (test.dat) do if not %%~zR lss 1 echo not empty
help if
dice que se puede añadir el NOT
directamente después de la if
para invertir la declaración de comparación
no debería haber un Switch después si if: para %% R in (test.dat) do si/i no %% ~ zR EQU 0 echo no está vacío – Christian4145
puede aprovechar subrutinas/archivos por lotes externos para llegar a parameter modifiers útil que resuelven este problema exacto
@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)
Alternativamente
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
)
regresa: >> inesperado 0 – Tertium
@Tertium - La solución es agregar 'set size = 0' en la línea antes del bucle' for'. –