[BATCH] DIR d'un seul sous-dossier

DIR d'un seul sous-dossier [BATCH] - Shell/Batch - Programmation

Marsh Posté le 12-07-2010 à 10:15:29    

Bonjour  :)

 

J'ai un arborescence du type :

 

Dossier 1
-- Sous dossier 1

 

Dossier 2
-- Sous dossier 2

 

etc...

 

Mon Dossier 1 et mon sous dossier 1 ont le même nom.

 

Ce que je souhaite faire c'est faire un dir de seulement des dossiers et du premier sous dossier et récupérer la dernière date d'écriture.

 

En cherchant sur le net j'avais trouvé un code qui, dans une boucle, effectuait cette manipulation et l'écrivait dans un fichier texte grace à " > "
Mais comme il était dans la boucle je n'obtenais que les infos du dernier dossiers.

 

Quelqu'un saurait-il comment faire si cela est possible en batch.  :??:

 

Merci d'avance :jap:


Message édité par hypershade le 12-07-2010 à 10:16:20

---------------
Hypershade's Gallery
Reply

Marsh Posté le 12-07-2010 à 10:15:29   

Reply

Marsh Posté le 12-07-2010 à 17:01:38    

C'est pas très clair pour moi. Tu connais le nom du 1er "sous dossier" à l'avance? Parce que dans ce cas:

Code :
  1. dir /ad "Dossier 1" | find "Sous dossier 1"


Te donnera la ligne contenant entre autre la date de création de "sous dossier 1".

 

Mais avec plus de précision je pourrai mieux t'aider.


Message édité par ngkreator le 12-07-2010 à 17:02:48
Reply

Marsh Posté le 13-07-2010 à 20:28:06    

Pas bête !
 
Le mieux ca serait même de stocker le nom du dossier parent dans une variable puis de faire le find de la même variable puis de stocker chaque info retournée dans un fichier texte.
 
Je teste ca lundi prochain et je te dit.
 
Merci :)


---------------
Hypershade's Gallery
Reply

Marsh Posté le 20-07-2010 à 15:20:46    

Ngkreator, ta petite ligne m'aide beaucoup merci :)
 
Cependant elle sort le résultat sous cette forme :
 
 R‚pertoire de xxxxxxxx
26/01/2010  16:59    <REP>          xxxxxxxxx
 
Comment n'afficher que  
 
26/01/2010  16:59    <REP>          xxxxxxx
 
??
 
merci d'avance :)


---------------
Hypershade's Gallery
Reply

Marsh Posté le 20-07-2010 à 15:49:51    

Ceci devrait faire l'affaire :

Code :
  1. DIR /AD "Dossier 1" | FINDSTR /R /C:"<REP> * Dossier 1$"


 
Jean-Pierre.

Reply

Marsh Posté le 21-07-2010 à 11:37:42    

Merci aigle ca marche comme je voulais.
 
L'autre problème que je rencontre c'est que si dans L:\Dossier1\Sous-Dossier1\ Sous-Sous-Dossier\j'ai des fichiers ecrits ce jour et d'autres non, bah la date de dernière écriture de Sous-Dossier 1 et Dossier ne sont pas mis à jour.
 
Je ne peux donc pas savoir quelle est la dernière date de sauvegarde du profil sauf si je scanne tous les sous dossier de chaque profils et que je fait je sors la date d'écriture la plus récente parmi tous les fichiers.
 
Je me demande si ce que je dois faire est vraiment faisable de cette manière. le batch a ses limites :(


---------------
Hypershade's Gallery
Reply

Marsh Posté le 28-07-2010 à 18:25:20    

et un double for pourrait aussi t'aider  
 
for /f "tokens=*" %i in ('dir /ad /b ') do @dir /ad /b "%i"
 
Par contre le batch n'est pas adapté pour la gestion des dates.
 
nb : s'il s'agit de profils windows, tu peut checker le fichier user.dat


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
Reply

Marsh Posté le 27-12-2010 à 14:38:04    

Salut :hello:
 
Petite question, je fais un dir d'un fichier qui porte le même nom dans plusieurs dossiers.
%a est égal au dossier concerné dans ma boucle (qui parcourt tous les dossiers).
rsycnlog.txt est le fichier dont je souhaite obtenir la date.
 
Voilà la structure
 
Dossier profils
|
|_ Dossier user 1
    |_ Rsynclog.txt
|_ Dossier user 2
    |_ Rsynclog.txt
|_ Dossier user 3
|   |_ Rsynclog.txt
|
|_ Dossier User n
     |_ Rsynclog.txt
 
 
 
 
 
Ma boucle va parcourir chaque sous dossier et je voudrais que la sortie de ma commande soit au format :
 
Dossier User 1   Rsynclog.txt      27/12/2010    13:54
Dossier User 2   Rsynclog.txt      25/12/2010    09:36
Etc...
 
 
 
 
Aujourd'hui ma commande est la suivante
 
For /F %a in (C:\liste_user) do dir /t:w /Dossier/Dossier_user/rsynclog.txt
 
Volume in drive C: is Profils
Volume Serial Number is XXXX-XXXX
 
Directory of  /Dossier/Dossier_User/
 
27/12/2010 13:54     2,654 Rsynclog.txt
          1 File(s)        2,654 bytes
          0 Dir(s)      32,263,265 bytes free
 
 
 
 
Puis-je formater ma sortie de facon a ce qu'elle ressemble ou s'approche du format que je souhaite?
 
Merci d'avance pour vos propositions et/ou solution :jap:


---------------
Hypershade's Gallery
Reply

Marsh Posté le 27-12-2010 à 14:44:59    

faisable oui, mais relou.
 
batch n'est vraiment pas l'idéal dès veut récup les infos des fichiers (taille, date,...)
 
dir /s  Rsynclog.txt | find "Rsynclog.txt " peut être
 
Sinon faut jongler avec 2 boucles : l'une sur les fichiers et l'autre sur le résultat de la commande.


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
Reply

Marsh Posté le 27-12-2010 à 15:27:10    

Bonne idée sauf que comme ce sont des profils utilisateurs y'a des centaines de sous-dossiers donc la commande met trop de temps :(


---------------
Hypershade's Gallery
Reply

Marsh Posté le 27-12-2010 à 15:27:10   

Reply

Marsh Posté le 27-12-2010 à 19:55:22    

alors un truc du genre :
 
for /f %i in ('dir /b ') do dir %i\Rsynclog.txt | find "Rsynclog.txt
 
mais t'auras pas le répertoire du coup.
 


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
Reply

Sujets relatifs:

Leave a Replay

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