Programmation DOS taille de fichiers CALL

Résolu/Fermé
Loulou - 23 mai 2011 à 14:25
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 8 juin 2011 à 23:15
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


2 réponses

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
Modifié par cchristian le 1/06/2011 à 13:05
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
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 lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
8 juin 2011 à 23:15
Bonsoir,

Merci pour le retour, bon courage.
0