Programmation DOS taille de fichiers CALL

Résolu
Loulou -  
cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je m'initie à la programmation sous DOS, j'aimerais lister les tailles des fichiers .bmp présents dans mon dossier test, seulement le programme ne permet pas de passer au deuxième fichiers (la taille du premier fichier est affiché en permanence, voici le détail de mon programme:

echo off
cd C:\Documents and Settings\XXX\Bureau\Test
REM On regarde les fichiers .bmp dans le dossier indique
set i=0
:back
call :cmd "*.bmp" Rem On renvoie à la ligne :cmd
exit
:cmd

set sizefile=%~z1
set sizefile2=%~z1
Rem on stock la valeur de la taille du fichier dans sizefile
REM pour finir on affiche la taille du fichier
echo %sizefile%
echo %sizefile2%
set /a i=%i%+1
Rem On utilise le préfixe /a pour que l'opération puisse s'effectuer
if not "%i%" == "2" goto cmd


A voir également:

2 réponses

cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention   131
 
Bonjour,

Tu dois mettre en oeuvre l'expansion retardée des variables :

SETLOCAL ENABLEdelayedExpansion ENABLEextensions

Pour plus d'infos Tape HELP SET sous l'invite de commandes:

Extrait de la doc en ligne HELP SET:
............L'expansion retardée de variables d'environnement vous permet d'utiliser un autre caractère (le point d'exclamation) afin d'étendre les variables d'environnement durant l'exécution. Si l'expansion retardée de variables est activée, les exemples ci-dessus peuvent être écrits comme suit afin defonctionner comme vous le souhaitez .............

En résumé tu dois remplacer le % par des ! et ajouter la commande SETLOCAL en début de programme.

Remarque:
L'extrait de code que tu présentes est un peu "dépouillé" et laisse supposer que tu te retrouveras avec la taille (%%~z1 ? ou plutôt %%~zI I doit être la variable d'une commande FOR. Taper HELP FOR sous l'invite de commandes) du dernier fichier (2ème fichier) dans les 2 variables sizefile et sizefile2 si j'ai bien compris ce que tu souhaites faire.
Illustration d'une commande FOR taille d'un fichier:

FOR %%I In ("nomde l'un de tesfichiers.xxx") DO (
rem %%~zI: VOIR HELP FOR sous l'invite de commandes dernière page
SET /A TailleFichier = %%~zI
ECHO "Pour Controle: taille du fichier %%I: !TailleFichier! octets."
)


Cordialement.
Cchristian.
0
Loulou
 
Super, votre code marche à merveille.
Je pensais que les variables pouvais être enregistrées sans expansion.
Je vais approfondir pour pouvoir comparer les fichiers entre eux et détecter les doubles.

Merci.
0
cchristian Messages postés 921 Date d'inscription   Statut Membre Dernière intervention   131
 
Bonsoir,

Merci pour le retour, bon courage.
0