2011-03-30 103 views
8

Me gustaría comprobar si un archivo específico está vacío en un archivo .bat de Windows. Aquí está mi script que no funciona:Windows BAT: prueba si un archivo específico está vacío

set dir="C:\test" 
set file="%dir%\fff.txt" 

cd %dir% 
if %file%%~zi == 0 exit 
ftp -s:"%dir%\ftp.action" 
exit 

¿Podría ayudarme a depurar esto, por favor?

Respuesta

7

O intentarlo con

@echo off 
set "dir=C:\temp" 
set "file=%dir%\a.txt" 

call :CheckEmpty "%file%" 
goto :eof 

:CheckEmpty 
if %~z1 == 0 exit 
ftp -s:"%dir%\ftp.action" 
goto :eof 

La principal diferencia es que yo uso una llamada a la función y usar el% ~ z1, como los modificadores sólo funciona para los parametros como % 1,% 2% .. 9 o de bucle parámetros como %% a ...

+0

¡Gracias, eso funciona! Solo tuve que eliminar las comillas dobles en los comandos "establecer", pero esto fue perfecto. –

+0

Las comillas dobles son necesarias para la ruta/nombres de archivo con espacios o caracteres especiales – jeb

+1

Bueno, los espacios no causarán problemas para el comando 'set'. De todos los caracteres que son legales en los nombres de archivo, creo que solo '&' y '^' podrían causar problemas. – Joey

0

Prueba esto:

Const ForReading = 1 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.OpenTextFile("c:\boot.ini", ForReading) 


    Dim arrFileLines() 
    i = 0 
    Do Until objFile.AtEndOfStream 
     Redim Preserve arrFileLines(i) 
     arrFileLines(i) = objFile.ReadLine 
     i = i + 1 
    Loop 
    objFile.Close 
+3

Amigos no dejen que sus amigos codifiquen cuando están borrachos :-) – paxdiablo

+0

¿Qué es este lenguaje? Esto no parece ser simple línea de comandos de Windows (.bat) ... –

+0

No, mi error. es vbscript, puede crear un archivo .vbs y pegarlo. –

4
solución

lotes mediante comparación de archivos:

type nul > blank 
fc myfile blank > nul 
if errorlevel 1 echo myfile is not empty 
Cuestiones relacionadas