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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Résolu] [Batch] [Newbies] Diverses questions au sujet du Batch

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] [Batch] [Newbies] Diverses questions au sujet du Batch

n°1332849
ewkilian
Posté le 27-03-2006 à 14:34:22  profilanswer
 

Bonjour
 
Tout d'abort je souhaite remercier pascale73 pour son script ICI
 
Cependant j'aurais quelques questions au sujet du code que je n'arrive malheureusement pas à definir malgré l'ami google
 
@echo off  
@title Effacement de dossiers vides  
@dir /a: d /s /b "c:\dossier"|sort /r >%temp%\list-tri.txt  
@rem liste et trie tous les dossiers (avec leurs chemins) ordre alpha envers  
@rem boucle qui va examinier chaque ligne à partir du début  
@for /f "delims=" %%a in ('type %temp%\list-tri.txt') do call :commande "%%a"  
// A quoi consiste la fonction delims ? type ?
@rem les "" de %%a sont utiles si le nom des dossiers ont des espaces  
@echo fin de la liste : AU REVOIR !  
@del "%temp%\list-tri.txt"  
@pause  
 
 
:commande  
@set variable=%~1  
// Pourquoi initaliser la variable ci dessus %~1 ? A quoi correspond ~1 ?
@rem commande pas très utile variable sans "" on peut s'en passer  
@echo %variable%  
@rem idem remarque ci-dessus permet de visualiser les dossiers utile uniquement en test  
@rd "%variable%"  
 
 
@set variable=  
// Cette commande initialise la variable à NULL ? Pourquoi ?
 
Je ne connais pas l'endroit où est definit le fait que le dossier soit vide ou non.
 
Merci beaucoup pour votre aide
Cordialement
Ewkilian


Message édité par ewkilian le 28-03-2006 à 15:56:39
mood
Publicité
Posté le 27-03-2006 à 14:34:22  profilanswer
 

n°1333061
pascale73
Posté le 27-03-2006 à 19:05:00  profilanswer
 

Bonjour,
 
Attention, Il est loin d'être parfait ce script !
et il a besoin de corrections.
Tu trouveras sur ce site un tutoriel batch très bien fait : ftp://anonymous.ftp.ovh.net/astas [...] _batch.pdf
qui te permettras de trouver ces réponses et de nombreuses autres.
 
Avant de se lancer dans de longues explications, regarde ce document.
et voici une réponse rapide
question numéro 1 : récupère les lignes unes par unes, voir l'aide de la commande for (aide et support, c'est plus agréable que for /?)
question numéro 2 : supprime les "" voir http://www.astase.com/forums/viewtopic.php?t=1786
question numéro 3 : réinitialise une variable (voir l'aide de la commande set) effectivement pas indispensable.

n°1333292
ewkilian
Posté le 28-03-2006 à 08:50:41  profilanswer
 

Merci beaucoup pour les informations.
Tout cela est encore assez flou pour moi, mais ca viendra...
A present grace à votre script j'obtiens un fichier texte avec les chemins des dossiers et des fichiers. Et il possible d'effectuer un traitement spécial pour les fichiers.
je m'explique au moment de la 2eme boucle, le script relie chaque ligne. lorsqu'il tombe sur un dossier vide il l'efface, lorsqu'il tombe sur un fichier il genere une erreur --> Normal. Cependant je souhaiterais  
faire la difference entre un dossier et un fichier.
 
je souhaiterais effectuer cela :
If ( LigneLu == Dossier )
     Rd LigneLu
else
     Fonction (LigneLu)
 
J'espere que je me suis pas trop mal exprimé
Merci beaucoup pour votre aide
EwKilian

n°1333335
wackevat
Posté le 28-03-2006 à 10:27:44  profilanswer
 

Cette commande ne liste pas les fichiers mais uniquement les dossiers :
dir /a:d /s /b "c:dossier"|sort /r >%temp%list-tri.txt
à cause de l'option /a avec paramètre d.
 
dir /?
pour plus d'infos.
 
Il y a beaucoup à améliorer dans ce script, c'est vrai. Le mieux serait d'expliquer ton objectif pour une meilleure orientation.
 
Pour ta question du début : la commande
rd "%variable%"
supprime un dossier uniquement s'il est vide, au contraire il génèrera un message d'erreur et passe son chemin.


Message édité par wackevat le 28-03-2006 à 10:28:36
n°1333393
ewkilian
Posté le 28-03-2006 à 11:12:28  profilanswer
 

Explication du systeme que je souhaite mettre en place :
 
Dossier 1
     - Fichier.txt
     - Fichier.doc
Dossier 2
     - Fichier.txt
     - Fichier.doc
Dossier 3
 
Dossier 4
     - Fichier.txt ( agé de plus de 30jours )
     - Fichier.doc ( agé de plus de 30jours )
 
Voila donc je souhaiterais mettre en place un script qui effacer les dossiers Vides et les dossiers ayant des fichiers vieux de plus de 30jours par conséquent d'apres l'exemple ci-dessus, il ne resterait plus que les dossier1 & dossier2. Les 2 autres seront supprimés
J'ai en ma posséssion un programme qui me permet d'effacer les fichiers agés de plus de 30jours, que je lance comme cela :
supprime.sh "c:/chemin/" 30 *.txt
[Commentaire]
30 = agé de 30jours
*.txt = type de fichier à verifié
[/Commentaire]
 
la petite ligne ci-dessus est utilisée dans un autre code batch et je suis certain qu'elle fonctionne
 
Merci à vous tous pour votre aide, ça fait vraiment plaisir

n°1333439
wackevat
Posté le 28-03-2006 à 11:30:28  profilanswer
 

Que se passe-t-il si un dossier contient des fichiers de plus de 30 jours et d'autres plus jeunes ?
 
Il sera également supprimé ou uniquement les vieux fichiers le seront ? Si le deuxième cas :
- Est-ce que ton script supprime.sh traite le dossier donné en paramètre récursivement ?
- Et si tu lançais supprime.sh au tout début du batch, avant de procéder à la suppression des dossiers vides ?

n°1333442
ewkilian
Posté le 28-03-2006 à 11:31:35  profilanswer
 

nglechau :
 
En executant le code de pascale73 voici ce que j'obtiens dans le fichier list-tri.txt  
 
[list-tri.txt]
c:\test\5\Nouveau Document texte.txt
c:\test\5
c:\test\4\Nouveau Document texte.txt
c:\test\4
c:\test\3
c:\test\2
c:\test\1\Nouveau Document texte.txt
c:\test\1
[/list-tri.txt]
 
Par conséquent on s'appercoit bien que le code liste également les fichiers.
 
A bientot
Ewkilian


Message édité par ewkilian le 28-03-2006 à 11:32:22
n°1333461
wackevat
Posté le 28-03-2006 à 11:40:23  profilanswer
 

Pour éviter le bug des smileys sur le forum, il avait mis un espace après le /a: et avant le d. L'as-tu enlevé ?
 
D'où ma suggestion :
dir /?

n°1333674
ewkilian
Posté le 28-03-2006 à 14:24:33  profilanswer
 

nglechau :  
J'ai enlevé l'espace et maintenant il m'affiche seulement les chemins des dossiers, Parfait
Maintenant ton idée au sujet de passer le supprime.sh avant est interessante.
 
je pense que cela devrait fonctionner à une condition, les  :
en ce moment j'ai cela :
 
c:\test4\  
c:\test3\  
 
et
 
il me faudrait cela
 
c: /test/4     ( sans espace )
c: /test/3     ( sans espace )  
 
Existe t il une option ou une fonction pour effectuer cela ?
 
Merci


Message édité par ewkilian le 28-03-2006 à 14:25:26
n°1333692
wackevat
Posté le 28-03-2006 à 14:37:44  profilanswer
 

Oui.
 
set VAR=%VAR:x=y%
 
set /?
pour plus d'info.

mood
Publicité
Posté le 28-03-2006 à 14:37:44  profilanswer
 

n°1333722
ewkilian
Posté le 28-03-2006 à 15:04:12  profilanswer
 

J'ai lu la doc set /?  
 
Mais ta fonction est toujours encore aussi flou pour moi ( désolé )
En faite je ne sais pas à quel endroit je peux placer cela ? je pense au niveau du dir ?
 
Qu'elle est l'argument qui tranforme le  \ en /
 
Je m'excuse vraiment pour mes questions, mais la je "nage" complement
Merci beaucoup


Message édité par ewkilian le 28-03-2006 à 15:04:24
n°1333726
wackevat
Posté le 28-03-2006 à 15:09:23  profilanswer
 

Dans  
set /?
tu lis notamment le paragraphe (je suis en anglais) :
---
Environment variable substitution has been enhanced as follows:
 
    %PATH:str1=str2%
 
etc.
---
C'est pareil pour toute variable.

n°1333765
ewkilian
Posté le 28-03-2006 à 15:55:43  profilanswer
 

C'est bon j'ai finit tout mon script grace a votre aide, un grand merci à l'equipe etc....


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

  [Résolu] [Batch] [Newbies] Diverses questions au sujet du Batch

 

Sujets relatifs
[VBA] [Résolu] Liste de choix[Résolu] Créer un objet à partir du nom de son type
[résolu] Problème bouton / javascript[résolu] !! interprétation IE / Firefox !!
[Résolu] code instable[résolu] Frames vs css ? mise a jour de mon site...
[resolu]Problème d'alignement[ Résolu ] Passage de variable PHP > Flash
Problème lors d'insertion lignes dans tableau [résolu]Menu css : Firefox Ok - IE Ko [Résolu]
Plus de sujets relatifs à : [Résolu] [Batch] [Newbies] Diverses questions au sujet du Batch


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