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

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

Marsh Posté le 06-08-2006 à 00:29:39    

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

Reply

Marsh Posté le 06-08-2006 à 00:29:39   

Reply

Marsh Posté le 06-08-2006 à 00:37:30    

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
Reply

Marsh Posté le 06-08-2006 à 01:02:08    

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
Reply

Marsh Posté le 06-08-2006 à 01:04:32    

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

Reply

Marsh Posté le 06-08-2006 à 01:32:11    

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

Reply

Marsh Posté le 06-08-2006 à 08:37:28    

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...

Reply

Marsh Posté le 06-08-2006 à 11:23:29    

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 !

Reply

Marsh Posté le 06-08-2006 à 11:24:29    

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

Reply

Marsh Posté le 06-08-2006 à 15:04:54    

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
Reply

Marsh Posté le 06-08-2006 à 15:12:09    

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

Reply

Marsh Posté le 06-08-2006 à 15:12:09   

Reply

Marsh Posté le 06-08-2006 à 17:49:28    

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

Reply

Marsh Posté le 06-08-2006 à 17:53:52    

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


Message édité par webding le 06-08-2006 à 17:54:05
Reply

Marsh Posté le 06-08-2006 à 18:29:12    

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

Reply

Marsh Posté le 06-08-2006 à 19:06:58    

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
Reply

Marsh Posté le 06-08-2006 à 19:53:17    

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
Reply

Marsh Posté le 06-08-2006 à 19:56:38    

:'(


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-08-2006 à 20:43:32    

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

Reply

Marsh Posté le 06-08-2006 à 20:47:12    

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)
Reply

Marsh Posté le 06-08-2006 à 20:50:29    

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

Reply

Marsh Posté le 06-08-2006 à 20:52:54    

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

Reply

Marsh Posté le 06-08-2006 à 20:56:26    

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 ...

Reply

Marsh Posté le 06-08-2006 à 21:15:40    

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.

Reply

Marsh Posté le 06-08-2006 à 21:20:32    

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
Reply

Marsh Posté le 06-08-2006 à 21:26:26    

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.

Reply

Marsh Posté le 06-08-2006 à 21:38:17    

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)
Reply

Marsh Posté le 06-08-2006 à 21:40:20    

Si tu me les refait tous, pourquoi pas.

Reply

Marsh Posté le 06-08-2006 à 21:43:15    

[:moule_bite]


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

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-08-2006 à 21:47:56    

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

Reply

Marsh Posté le 06-08-2006 à 21:49:19    

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
Reply

Marsh Posté le 06-08-2006 à 21:54:28    

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 !)

Reply

Marsh Posté le 01-08-2007 à 16:30:45    

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

Reply

Marsh Posté le 01-08-2007 à 16:39:10    

Pourquoi tu ne créer pas un tropic ?

Reply

Marsh Posté le 01-08-2007 à 16:48:21    

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.

Reply

Marsh Posté le 02-08-2007 à 16:14:21    

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
Reply

Marsh Posté le 27-08-2007 à 17:31:22    

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

Reply

Marsh Posté le 27-08-2007 à 17:37:48    

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

Reply

Marsh Posté le 27-08-2007 à 17:55:58    

[:el g]

Reply

Marsh Posté le 19-09-2007 à 05:36:26    

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
@++

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed