Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2602 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Batch - Obtenir le poids d'un fichier avec la commande ForFile.exe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Batch - Obtenir le poids d'un fichier avec la commande ForFile.exe

n°1420668
webding
Posté le 06-08-2006 à 00:29:39  profilanswer
 

Bonjour, quelqu'un saurait-il me donné la syntaxe pour obtenir le poids d'un fichier avec la commande ForFile.exe ?

mood
Publicité
Posté le 06-08-2006 à 00:29:39  profilanswer
 

n°1420670
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2006 à 00:37:30  profilanswer
 

je veux pas faire mon chieur, mais c'est 2 lignes en python :

Code :
  1. import os
  2. taille = os.stat("c:\\fichier.xxx" )[6]


Message édité par Harkonnen le 06-08-2006 à 00:40:19
n°1420673
webding
Posté le 06-08-2006 à 01:02:08  profilanswer
 

Merci beaucoup  :)  
 
Mais cette foi si im me faut absolument un script batch, c'est pour completter un script batch que je cherche le poid du fichier, et je n'ai pas envi de refaire mon script en python.


Message édité par webding le 06-08-2006 à 01:02:17
n°1420674
webding
Posté le 06-08-2006 à 01:04:32  profilanswer
 

En plus je n'arrive toujours pas à exécuter les script python

n°1420679
webding
Posté le 06-08-2006 à 01:32:11  profilanswer
 

import os
taille = os.stat("c:\\fichier.xxx" )[6]  
 
 
ne done rien chez moi

n°1420697
Sve@r
Posté le 06-08-2006 à 08:37:28  profilanswer
 

webding a écrit :

En plus je n'arrive toujours pas à exécuter les script python


Ben évidemment. Il te faut d'abord installer Python pour pouvoir exécuter des scripts python...
 

webding a écrit :


import os
taille = os.stat("c:\\fichier.xxx" )[6]  
 
ne done rien chez moi


Ben oui, ce n'est pas du batch...
 
Bon, je connais pas le batch (suis spécialisé dans unix). Mais en faisant "dir fichier" j'obtiens les infos de mon fichier dont la taille. Peut-être peux-tu extraire de ces infos juste ce qui t'intéresse...

n°1420727
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2006 à 11:23:29  profilanswer
 

webding a écrit :

import os
taille = os.stat("c:\\fichier.xxx" )[6]  
 
 
ne done rien chez moi


je sais pas si tu as saisi le principe de Python... avec Python, tu as IDLE qui est livré, dans lequel tu peux exécuter des instructions ligne à ligne. donc tu lances IDLE, puis tu tapes les 2 lignes que je t'ai donné, en appuyant sur entrée entre chaque ligne. regarde :
 
http://img147.imageshack.us/img147/9058/pythonhu1.th.png
ça c'est le mode immédiat : tu tapes tes commandes, et tu as le résultat directement à l'écran.
 
pour exécuter des scripts, il faut les lancer depuis une fenetre dos par la commande python, en ayant préalablement vérifié qu'elle existe bien dans ton PATH. ensuite c'est tout con : pour lancer le script test.py, alors tu tapes :
 
C:\>python test.py
 
et c'est tout !

n°1420730
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2006 à 11:24:29  profilanswer
 

Sve@r a écrit :


Bon, je connais pas le batch (suis spécialisé dans unix). Mais en faisant "dir fichier" j'obtiens les infos de mon fichier dont la taille. Peut-être peux-tu extraire de ces infos juste ce qui t'intéresse...


non non surtout pas, j'essaie de lui faire comprendre qu'utiliser le batch en 2006 alors qu'il existe des merveilles comme python ou autres c'est complètement has been :D

n°1420840
webding
Posté le 06-08-2006 à 15:04:54  profilanswer
 

S'ayet, les sryptes python s'exécutes.
 
Mais comme je l'ai dit, cette foi si im me faut absolument un script batch, c'est pour completter un script batch que je cherche le poid du fichier, et je n'ai pas envi de refaire mon script en python.


Message édité par webding le 06-08-2006 à 15:12:31
n°1420842
webding
Posté le 06-08-2006 à 15:12:09  profilanswer
 

Sve@r a écrit :

Bon, je connais pas le batch (suis spécialisé dans unix). Mais en faisant "dir fichier" j'obtiens les infos de mon fichier dont la taille. Peut-être peux-tu extraire de ces infos juste ce qui t'intéresse...


 
Ben j'ai fait cette boucle mais je n'arrive pas à récupérer le poids du fichier:
 
For /f "skip=5 tokens=3 delims= " %%i In ('Dir /os /s') Do echo %%i

mood
Publicité
Posté le 06-08-2006 à 15:12:09  profilanswer
 

n°1420914
wackevat
Posté le 06-08-2006 à 17:49:28  profilanswer
 

webding a écrit :

Ben j'ai fait cette boucle mais je n'arrive pas à récupérer le poids du fichier:
 
For /f "skip=5 tokens=3 delims= " %%i In ('Dir /os /s') Do echo %%i


echo %%~zi

n°1420916
webding
Posté le 06-08-2006 à 17:53:52  profilanswer
 

OK, merci beaucoup  :)  
 
Donc:
 
for /r "\" %%i in (*.*) do  echo %%~zi


Message édité par webding le 06-08-2006 à 17:54:05
n°1420931
webding
Posté le 06-08-2006 à 18:29:12  profilanswer
 

Et on peut faire ça avec les répertoires ?

n°1420951
webding
Posté le 06-08-2006 à 19:06:58  profilanswer
 

J'ai essayer ceci pour les répertoire:  
 
for /f "delims=" %%i in ('dir /a:d /b /s %1') do echo %%~zi
 
Mais cela ne fonctionne pas, ça affiche 0 même pour les répertoire qui pésent lourds.
 
J'aurais voulu essayer sans le dire, avec for /r plutôt que for /f, mais j'ai un souci: http://forum.hardware.fr/hardwaref [...] 4728-1.htm


Message édité par webding le 06-08-2006 à 19:08:31
n°1420969
webding
Posté le 06-08-2006 à 19:53:17  profilanswer
 

OK, donc maintenant que le problème du point est résolu, voici où j'en suis pour le poids des répertoires:
 
for /r "%~1\" %%i in (.) do if "%%~zi"=="0" echo  %%~zi
 
Mais cela ne fonctionne toujours pas corectement, même les répertoire qui pésent plus de 0 octet sont affihcher à 0


Message édité par webding le 06-08-2006 à 19:55:02
n°1420976
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2006 à 19:56:38  profilanswer
 

:'(


---------------
J'ai un string dans l'array (Paris Hilton)
n°1421042
webding
Posté le 06-08-2006 à 20:43:32  profilanswer
 

Alors n'y a-t-il pas moyen de tester le poids d'un répertoire ?

n°1421045
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2006 à 20:47:12  profilanswer
 

bah écoute, j'ai passé mon wk end à te faire comprendre que le batch n'est pas fait pour ce genre de truc, je t'ai orienté vers python car c'est bien plus adapté à ton cas, mais tu n'en as cure :spamafote:
quand je vois la gueule des solutions qu'on te propose en batch, je me dis que ce truc est décidément mort, et fait partie d'un passé qui j'espère ne refera jamais surface (quoiqu'on en a quelques réminiscences avec PERL et les shell linux, mais passons)


---------------
J'ai un string dans l'array (Paris Hilton)
n°1421049
webding
Posté le 06-08-2006 à 20:50:29  profilanswer
 

Merci pour m'avoir fait découvror la pytho, il me serat surement utilie, par exemple pour créer une barre d'outils dans la barrre des tâche, mais cette foi si im me faut absolument un script batch, c'est pour completter un script batch que j'ai déjà comancer qui est bien long, et que je ne veux pas tous refaire en python que je cherche le poid du fichier, et je n'ai pas envi de refaire mon script en python

n°1421051
gizmo
Posté le 06-08-2006 à 20:52:54  profilanswer
 

Euh. Juste par curiosité, il fait quoi, ton batch?

n°1421059
webding
Posté le 06-08-2006 à 20:56:26  profilanswer
 

Ut ta de chose, il test des répertoires dans programme files pour savoir si des applications sont installés ou pas si non il les installer, il teste des clé dans le registre, il teste les tâches planifié, il sauvegardes des fichiers, ect ...

n°1421089
Elmoricq
Modérateur
Posté le 06-08-2006 à 21:15:40  profilanswer
 

En batch je ne peux pas dire, mais en VBScript (compris en natif par windows) :

Dim fileObject, file  
 
Set fileObject = CreateObject("Scripting.FileSystemObject" )
Set file = fileObject.GetFolder("un:/repertoire/au/hasard" )
 
MsgBox file.name & " - " & file.size & "octets."


 
(petit lien : http://www.asp-fr.net/vbscript )
 
Encore une fois, le batch est mort. :/
 
Je pense que tu mettras moins de temps à convertir ton script à un autre langage, qui sera bien plus pratique et puissant que le batch, et plus lisible.
 
Sauf si, bien sûr, ton .BAT pèse quelques centaines de lignes avec plein de goto dans tous les sens. J'ai déjà vu ça une ou deux fois dans ma vie, et dans ce cas il ne me reste plus qu'à te présenter mes condoléances.

n°1421095
webding
Posté le 06-08-2006 à 21:20:32  profilanswer
 

Elmoricq a écrit :

En batch je ne peux pas dire, mais en VBScript (compris en natif par windows) :

Dim fileObject, file  
 
Set fileObject = CreateObject("Scripting.FileSystemObject" )
Set file = fileObject.GetFolder("un:/repertoire/au/hasard" )
 
MsgBox file.name & " - " & file.size & "octets."


 
(petit lien : http://www.asp-fr.net/vbscript )
 
Encore une fois, le batch est mort. :/
 
Je pense que tu mettras moins de temps à convertir ton script à un autre langage, qui sera bien plus pratique et puissant que le batch, et plus lisible.
 
Sauf si, bien sûr, ton .BAT pèse quelques centaines de lignes avec plein de goto dans tous les sens. J'ai déjà vu ça une ou deux fois dans ma vie, et dans ce cas il ne me reste plus qu'à te présenter mes condoléances.


 
Merci beaucoup  :)  
 
En effet mon batch principale fait plus de 4000 lignes, enorme, et encore j'ai minimisé les commentaires, et les scripts ne sont pas très espacern les sauts de lignes je conait pas dans mon  batch.
 
Cepandant, je peut ajouter qun même quelques vbs pour se que je ne peut pas faire en batchs.

Message cité 2 fois
Message édité par webding le 06-08-2006 à 21:21:47
n°1421106
pains-aux-​raisins
Fatal error
Posté le 06-08-2006 à 21:26:26  profilanswer
 

webding a écrit :

Merci beaucoup  :)  
 
En effet mon batch principale fait plus de 4000 lignes, enorme, et encore j'ai minimisé les commentaires, et les scripts ne sont pas très espacern les sauts de lignes je conait pas dans mon  batch.
 
Cepandant, je peut ajouter qun même quelques vbs pour se que je ne peut pas faire en batchs.


En VBS je pense que le programme ne ferait pas plus de 1000 lignes (borne haute), en factorisant le code redondant en fonctions et sous-programmes.

n°1421115
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2006 à 21:38:17  profilanswer
 

webding a écrit :


Cepandant, je peut ajouter qun même quelques vbs pour se que je ne peut pas faire en batchs.


j'ai une meilleure idée : que dirais tu de virer tout le batch et de ne garder que le vbs ? [:el g]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1421119
webding
Posté le 06-08-2006 à 21:40:20  profilanswer
 

Si tu me les refait tous, pourquoi pas.

n°1421124
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-08-2006 à 21:43:15  profilanswer
 

[:moule_bite]


Message édité par Harkonnen le 06-08-2006 à 21:43:36

---------------
J'ai un string dans l'array (Paris Hilton)
n°1421127
webding
Posté le 06-08-2006 à 21:47:56  profilanswer
 

Je ne pense pas que tu ais asser de temps à m'accorder spécialement à moi, pour tout refaire.

n°1421128
webding
Posté le 06-08-2006 à 21:49:19  profilanswer
 

Pour l'instant je prend ça:
 

Code :
  1. Dim fileObject, file 
  2. Set fileObject = CreateObject("Scripting.FileSystemObject" )
  3. Set file = fileObject.GetFolder("un:/repertoire/au/hasard" )
  4. MsgBox file.name & " - " & file.size & "octets."


 
Je fairai un echo > fichier.txt dans mon batch, mais je suis sur que l'on peut tester le pids d'un dosier en dos, c'est quand même pas un action complexe ça.


Message édité par webding le 06-08-2006 à 21:50:41
n°1421133
pains-aux-​raisins
Fatal error
Posté le 06-08-2006 à 21:54:28  profilanswer
 

ben ouai, mais le batch comme son nom l'indique c'est à la base fait pour enchainer des traitements par lot (batch). Ca a un peu évolué ensuite mais au départ, il n'y avait même pas de boucle for (sic !)

n°1594486
max-k01
Posté le 01-08-2007 à 16:30:45  profilanswer
 

Bonjour.
J'essaye de récupérer la taille du profil de l'utilisateur connecté mais ça ne fonctionne pas, quelqu'un aurai une idée ??
 
Voivi le code tel qu'il est pour le moment :
 
Dim fileObject, file
 
Set WshShell = WScript.CreateObject("WScript.Shell" )
 
Set WshSysEnv = WshShell.Environment("SYSTEM" )
 
Set UserProfile = WshSysEnv("USERPROFILE" )
 
Set fileObject = CreateObject("Scripting.FileSystemObject" )
 
Set file = fileObject.GetFolder("UserProfile" )
 
MsgBox file.name & " - " & file.size & "octets."
 
Merci d'avance

n°1594491
webding
Posté le 01-08-2007 à 16:39:10  profilanswer
 

Pourquoi tu ne créer pas un tropic ?

n°1594493
max-k01
Posté le 01-08-2007 à 16:48:21  profilanswer
 

C'est une idée mais je trouvai que la question suivai bien la réflexion de ce topic ci.
 
Mais bon, tu as raison je vais en créer un nouveau.

n°1595048
rengzehn
Posté le 02-08-2007 à 16:14:21  profilanswer
 

Harkonnen a écrit :

bah écoute, j'ai passé mon wk end à te faire comprendre que le batch n'est pas fait pour ce genre de truc, je t'ai orienté vers python car c'est bien plus adapté à ton cas, mais tu n'en as cure :spamafote:
quand je vois la gueule des solutions qu'on te propose en batch, je me dis que ce truc est décidément mort, et fait partie d'un passé qui j'espère ne refera jamais surface (quoiqu'on en a quelques réminiscences avec PERL et les shell linux, mais passons)

 

rho le vilain troll gouflu, mais pourquoi je réponds :( ne jette pas la pierre aux shells unix et à perl, c'est grace à eux que python existe. Pour des scripts aussi simple y'aura quasi _aucune_ diff de syntaxe entre perl et python.

 

sinon +1 comment est ce possible de faire encore de l'admin avec du batch :|


Message édité par rengzehn le 02-08-2007 à 16:16:57
n°1604652
lombrusco
Posté le 27-08-2007 à 17:31:22  profilanswer
 

bah des fois, tes batchs font des milliers de lignes et t'as ni le temps ni le budget et donc bon tu fais avec :D

n°1604657
Coolnut
Posté le 27-08-2007 à 17:37:48  profilanswer
 

Ce qu'il y a de bien avec le batch c qu'on peut faire ca en une seule ligne

n°1604680
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-08-2007 à 17:55:58  profilanswer
 

[:el g]

n°1612814
arnaud1206
Posté le 19-09-2007 à 05:36:26  profilanswer
 

Salut un "dir /S" te renvoie le nombre de fichiers contenus dans un repertoire ainsi que la taille du repertoire en octets sur l'avant derniere ligne
@++

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Batch - Obtenir le poids d'un fichier avec la commande ForFile.exe

 

Sujets relatifs
[PHP] Upload de fichier presque fonctionnel (presk...)Batch - Afficher les fichier du répertoire System Volume Information
Batch - Faire une image de disque dur en ligne de commandeBatch - Lister les codecs installer sur le PC
Exporter le thème Windows en ligne de commande[ Batch Dos ] Runas / sanur
Effacer la mise en forme d'un fichierprobleme chargement de fichier csv
Plus de sujets relatifs à : Batch - Obtenir le poids d'un fichier avec la commande ForFile.exe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR