8
votes

Windows Bat: Test si un fichier spécifique est vide

Je voudrais vérifier si un fichier spécifique est vide dans un fichier Windows .bat. Voici mon script non fonctionnel:

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

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


0 commentaires

3 Réponses :


0
votes

Essayez ceci:

    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


2 commentaires

Quel est ce langage ? Cela ne semble pas être une ligne de commande Windows simple (.bat) ...


Non, mon erreur. Sa VBScript, vous pouvez faire un fichier .vbs et le coller.



8
votes

ou essayez-le avec

@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


4 commentaires

Merci, ça marche! Je n'ai dû que retirer les citations doubles dans les commandes "Set", mais c'était parfait.


Les devis doubles sont nécessaires pour les noms de chemin / de fichiers avec des espaces ou des caractères spéciaux


Eh bien, les espaces ne causeront pas de problèmes pour la commande définir . De tous les caractères légaux dans les noms de fichiers, je pense que & et ^ pourrait causer des problèmes.


@Joey: Bien sûr, vous avez raison, mais les citations sont également bonnes pour éviter des problèmes avec des espaces invisibles à la fin de la ligne, avec des citations, ces espaces sont ignorés



4
votes

Solution de lots à l'aide du fichier Comparer:

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


0 commentaires