rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Batch - DOS - taille d'un repertoire

Posté par damien, le jeudi 8 janvier 2004 à 18:31:14
Bonjour,
Je suis en train de faire un petit batch pour automatiser la sauvegarde de mes données. Je cherche une commande qui me permette de recuperer la taille d'un repertoire. Sur Unix, il existe la commande du, mais avec le DOS...nada. Quelqu'un connait il une commande ou un script qui le fasse?
Bye

Damien
Répondre à damien  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
grofwa, le vendredi 9 janvier 2004 à 09:33:26
Salut,

Personnellement, pour du scripting un peu plus fin, j'utilise des outils UNIX qui ont été réécris pour Windows. Du coup, je peux faire des du, ls et awk bien utiles.
En cherchant un peu sur le web, tu trouveras ton bonheur !

Michael.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]
Répondre à grofwa

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jeff, le vendredi 9 janvier 2004 à 09:40:38
tu peux essayer avec ca pour generer un fichier texte...
dir tondossier /s /-C >fichier.txt
Répondre à jeff

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Damien, le lundi 12 janvier 2004 à 12:08:33
Pourrais tu me dire quels "outils UNIX qui ont été réécris pour Windows" tu utilises?
Bye
Répondre à Damien

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ludo, le dimanche 27 mai 2007 à 16:10:38
voila comment je fais :

set p1=0
for /r C:\monrepertoire %%i in (*.*) do set /a p1=!p1!+%%~zi/1000
echo %p1%

"/r C:\monrepertoire" indique à "FOR" de travailler en recursif sur tous les sous repertoires à partir de C:\monrepertoire .

il recherche tous les fichiers du type *.*
"set /a" permet de sommer la taille des fichiers (%%~zi) , je divise par 1000 sinon c'est trop gros pour lui.

remarquer les point d'exlamation !! plutot que les %% . ce sont des expansion retardée de variables (voir set /?)

ATTENTION !! ca ne marche que si les expansion retardée de variables sont ACTIVEES !!!! (pas par defaut) (j'ai galéré pour trouver ca !!)

il faut creer un 2éme batch qui appele le premier (j'ai pas trouver comment faire sans)

dans deux.bat :
cmd /v:on /c premier.bat

"/v:on " active les expansion retardée

y a plu qu'a lancer deux.bat
Répondre à ludo

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
damien, le vendredi 29 juin 2007 à 15:33:05
génial, exactement ce qu'il me fallait.
Répondre à damien

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dubcek, le dimanche 27 mai 2007 à 16:16:40
Par exemple : cygwin

Cygwin est un environnement UNIX pour Windows composé:

* d'un shell Unix
* d'une librairie dynamique (DLL) chargée de fournir une couche d'émulation Unix pour le système Windows
* d'un ensemble de librairies, sources et exécutables adaptés à Cygwin et prêt à l'emploi
Répondre à dubcek

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ManHack, le mercredi 1 août 2007 à 15:29:05
waw génial merci! Par contre pas de VI par default est un outrage :p
Répondre à ManHack

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dubcek, le mercredi 1 août 2007 à 15:45:17
c'est pour que l'on charge vim : http://www.vim.org :-))
Répondre à dubcek

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Juntao, le samedi 7 juillet 2007 à 21:10:49
Salut,

Merci ludo pour cette explication claire et concise, cependant j'aurais 2 questions :
- Pourquoi ne pas avoir utiliser l'opérateur += (p1+=...)
- Le fait de diviser la taille des fichiers par 1000, c'est pour obtenir des Ko ?

Merci par avance pour tes réponses

J.
Répondre à Juntao

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ludo, le vendredi 20 juillet 2007 à 21:16:28
en fait j'ai fait au plus vite, en regardant l'exemple de "SET /?"
je ne sais pas si ca marche avec += (c'est de la mise en forme , non?)

j'ai divisé par 1000 car chez moi, si je ne fait pas ca, le calcul final est inexacte.
pourquoi ? je n'en sais rien !!! (je suppose que ca donne un trop grand nombre (1go=1000000000octet).
si ca marche pour toi dis le moi.

une autre astuce tant que j'y suis :
si on veut la taille en Mo (megas octet) comme indiqué dans les propriétés d'un fichier,
il faut diviser par 1048 (et pas 1024 !! ) au lieu de 1000.

bon script a tous !
Répondre à ludo

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
max-k, le mercredi 1 août 2007 à 14:45:09
Bonjour à tous, je voudrai utiliser ce script pour connaitre la taille du profil de l'utilisateur courant mais ca ne semble pas fonctionner quand je fais :

for /r %userprofile% %%i in (*.*) do set /a p1=!p1!+%%~zi/1000

le script se plante tout seul avec uin petite message genre : "ande était inattendue"

Quelqu'un aurai-t-il une idée ??

Merci d'avance
Répondre à max-k

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
harros, le jeudi 9 août 2007 à 07:57:20
batch - DOS - taille d'un repertoire

Bonjour,

Je n'ai que recopié les exemples ci-dessus et sur un poste en W2K cela fonctionne


Contenu du fichier de commandes Taille-Dossier.Cmd

@Echo Off
Rem ATTENTION !! Cela ne marche que si les expansions retardées sont ACTIVEES
Rem Voila comment je fais :

Set P1=0
Set P2=0
Set Dossier=%1
Rem "/R C:\monrepertoire" indique à "FOR" de travailler en récursif.
Rem Il recherche tous les fichiers de type *.*
Rem "set /A" permet de sommer la taille des fichiers (%%~zi)
Rem et division par 1048 sinon c'est trop gros pour lui.
Rem Remarquez les point d'exlamation !! plutot que les %% autour de P1,
Rem ce sont des expansion retardée de variables (voir set /?)
For /R %Dossier% %%I In (*.*) Do Set /A P1=!P1!+%%~ZI/1048
For /R "%UserProfile%" %%I In (*.*) Do Set /A P2=!P2!+%%~ZI/1048
Echo Le dossier %Dossier% contient %P1%Koctets
Echo Le profile de l'utilisateur %UserProfile% contient %P2%Koctets

Commande passée :
Taille-Dossier.Cmd c:\winnt

Résultat affiché :
Le dossier c:\winnt contient 3571120Koctets
Le profile de l'utilisateur C:\Documents and Settings\Administrateur contient 64887Koctets
Répondre à harros

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dubcek, le mercredi 1 août 2007 à 15:11:16
Il doit y avoir un nom de fichier contenant un espace, mettre des guillemets:
for /r %userprofile% %%i in (*.*) do set /a p1=!p1!+"%%~zI"/1000
Répondre à dubcek

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
max-k, le mercredi 1 août 2007 à 15:59:56
malheureusement il n'y a aucun changement.

J'ai suivi la piste de VbScript mais là aussi il y a un os :

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

Visiblement, ça bloque à la ligne 7.
J'ai l'impression que c'est ma manière de récupérer la valeur de %USERPROFILE% dans une variable UserProfile qui ne lui plait pas.
Répondre à max-k

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
batchman, le vendredi 30 novembre 2007 à 12:19:13
pour active les expansions retardées

setlocal ENABLEDELAYEDEXPANSION

donc l'exemple sera

@Echo Off

setlocal ENABLEDELAYEDEXPANSION

Set P1=0
Set Dossier=%1
For /R %Dossier% %%I In (*.*) Do Set /A P1=!P1!+%%~ZI/1048
Echo Le dossier %Dossier% contient %P1%Koctets




pour le lancer exemple
enregistrer le fichier sous le nom Taille-Dossier.Cmd

Taille-Dossier.Cmd c:\windows
Répondre à batchman

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 lhnjanji, le mardi 26 février 2008 à 11:43:00
Bonjour,

je voudrait créer un script sous windows qui teste la tail d'un fichier avant de l'intégrer dans un répertoire


Merci d'avance
Répondre à lhnjanji
Discussions pertinentes trouvées dans le forum
07/12 11h03Taille repertoire reseau2
06/02 15h57[Windows taille répertoire augmente]0
Plus de discussions sur « batch DOS taille d'un repertoire »
Logiciels pertinents trouvés dans les téléchargements
Télécharger SyncBack 3.2.18.0SyncBack - SyncBack est un logiciel de synchronisation de répertoires. Il peut être utilisé: pour effectuer des backups de fichiers...Catégorie: Sauvegarde
Licence: Freeware/gratuit
Télécharger Pochette Express 2.0 beta 7 frPochette Express - Pochette express est un logiciel permettant d'imprimer sur une seule feuille, le recto et le verso de votre pochette CD,...Catégorie: Pochettes
Licence: Freeware/gratuit
Télécharger Unison 2.24.6Unison - Unison est un logiciel de synchronisation de répertoires. Il est capable de travailler de manière bidirectionnelle, c'est...Catégorie: Gestion de fichiers
Licence: Open Source
Télécharger GMail Space 0.5.6GMail Space - Si vous possédez un compte GMail , cette extension vous permet d'utiliser votre compte comme espace de stockage de fichiers...Catégorie: Extensions Firefox
Licence: Open Source
Plus de logiciels gratuits sur « batch DOS taille d'un repertoire »