OVH Cloud OVH Cloud

Taille d'un fichier en commande DOS

2 réponses
Avatar
RS
Bonjour,

Je cherche à faire ceci, en fichier batch :

if taille-du-fichier c:\test.txt = 0 goto fin
echo la taille du fichier est differente de 0
:fin
echo la taille du fichier est egale a 0

Y'a-t-il une commande dos ?

Merci d'avance.
Cordialement.

2 réponses

Avatar
Jean-Claude BELLAMY
Dans le message :,
RS a pris la peine d'écrire ce qui suit :
Bonjour,

Je cherche à faire ceci, en fichier batch :

if taille-du-fichier c:test.txt = 0 goto fin
echo la taille du fichier est differente de 0
fin
echo la taille du fichier est egale a 0


Y'a-t-il une commande dos ?
DOS ???????????????????

Certainement pas !!!!!!

Mais une "commande", oui !

p.ex. voci un script qui affiche la liste de tous les fichiers de taille
vide.
Il admet le critère de recherche en argument (chemin + filtre)
TESTVIDE.BAT
------- couper ici -------
@echo off
for /F "tokens=3,4 skip=5 delims= " %%F in ('dir %1 /-C') do if %%F==0 echo
%%G taille nulle

------- couper ici -------


Exemple d'utilisation (chez moi)
I:VBS>testvide
showadm.log taille nulle

I:VBS>testvide c:windowssystem32*.txt
arp.txt taille nulle
h323log.txt taille nulle

A toi de t'en inspirer, bidouiller, ...

La "clef" est la boucle FOR avec sa syntaxe hyper puissante.
Exécute
FOR /?
pour avoir de l'aide détaillée

Commentaires :

'dir %1 /-C'
Quand on encadre une chaine entre apostrophes (="simple quote")
dans ce qui suit le "in" de la boucle, c'est considéré comme
une COMMANDE qui est évaluée et donc le résultat est analysé
par la commande FOR.

tokens=3,4
je retiens uniquement les 3ème et 4ème blocs de chaque ligne de la
commande dir
En effet, "dir c:windowssystem32*.txt" donne ceci (chez moi) :
Le volume dans le lecteur C s'appelle WINDOWS
Le numéro de série du volume est 28BD-DCC1

Répertoire de c:windowssystem32

11/01/2006 15:41 39 adrIP.txt
19/12/2005 20:17 0 arp.txt
24/08/2001 14:00 19 199 eula.txt
11/10/2005 21:34 0 h323log.txt
21/02/2006 12:46 2 837 liste.txt
[...]
On voit que la taille et le nom du fichier sont les 3ème et 4ème champs

skip=5
Je saute les 5 1ères lignes

delims le délimiteur de champs est l'espace

Donc je récupère la taille dans la variable %%F (que je teste alors) et le
nom du fichier dans la variable %%G


-> Une telle commande tenant sur UNE SEULE LIGNE, difficile de faire mieux !
;-)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr


Avatar
JF
*Bonjour Jean-Claude BELLAMY* !
news:O$

| Dans le message :,
| RS a pris la peine d'écrire ce qui suit :
|| Bonjour,
||
|| Je cherche à faire ceci, en fichier batch :
||
|| if taille-du-fichier c:test.txt = 0 goto fin
|| echo la taille du fichier est differente de 0
||| fin
|| echo la taille du fichier est egale a 0
||
|| Y'a-t-il une commande dos ?
| DOS ???????????????????
| Certainement pas !!!!!!
|
| Mais une "commande", oui !
|
| p.ex. voci un script qui affiche la liste de tous les fichiers de taille
| vide.
| Il admet le critère de recherche en argument (chemin + filtre)
| TESTVIDE.BAT
| ------- couper ici -------
| @echo off
| for /F "tokens=3,4 skip=5 delims= " %%F in ('dir %1 /-C') do if %%F==0
| echo %%G taille nulle
|
| ------- couper ici -------
[snip]
| -> Une telle commande tenant sur UNE SEULE LIGNE, difficile de faire
| mieux ! ;-)

Suggestions :
Régler la longueur de ligne de OE de façon à ce que la ligne de commande ne
soit pas coupée.

Et pour l'en-tête :
"Dans le message :,
RS a pris la peine d'écrire ce qui suit :"

Cliquer sur le lien du message ne mène à rien si celui-ci n'est pas précédé
du protocole news:

Merci de tes excellentes contributions.
Amicalement,
--
1- Salutations, Jean-François :o)
2- Index du site de PN : http://www.d2i.ch/pn/az
3- Montrez vos écrans : http://fspsa.free.fr/copiecran.htm
4- Outlook Express: Suivez vos fils avec [CTL+H]