Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 2 sur 2
Aller à la page: <  1, 2
Rechercher et lister
Auteur Message
Répondre en citant
Message Re: Rechercher et lister 
Revue du message précédent :

Variotrail a écrit:
si je veux que la moulinette soit placée dans un tout autre répertoire que là ou se trouve tous les dossiers, comment puis-je lui donner un chemin cible pour aller éxécuter la boucle de recherche?


Un peu de modif dans la boucle for, on ajoute un chemin dans le DIR/B et on met ce chemin avant chaque %%A, complète le chemin à la ligne 8 suivant l'explication
Code:
@echo off
 
:: Extention inconnue ou non existante? - variables ?  adapter :
set fichier=docte
set recherche=RENE

:: Exemple : si ce batch est placé dans C:\user\%username%\, et que les dossiers à traiter sont sur le bureau,
:: Le ".\" est très important, ça évite une erreur si un fichier est nommé "Desktop", avec le ".\" on montre bien au batch que c'est un dossier qu'on cherche
set dossier=.\Floup
 
:: écrase le fichier si il existe
echo.>liste.log
 
echo.
echo En cours...
echo patientez jusqu'… l'ouverture du fichier contenant la liste...
 
:: Parcourt tous les dossiers :
for /f "tokens=*" %%A in ('dir /b "%dossier%"') do (
 
:: Ouvre le fichier s'il existe et y recherche la chaîne :
    if exist "%dossier%\%%A\%fichier%" (
        for /f "tokens=*" %%Z in ('type "%dossier%\%%A\%fichier%" ^| find /i "%recherche%"') do (
            echo %dossier%\%%A >>liste.log
        )
    )
 
)
 
echo.
echo Termin‚!
echo le fichier s'ouvre...
start "" notepad liste.log
pause
exit


Pour ta deuxième question, c'est exactement le même principe mais avec une boucle for dans la boucle for, je suis sûr qu'avec le code tu peux trouver par toi-même ^^'
Le principe :
For %%A qui parcourt les dossiers parents (1, 2, 3, etc) {
....For %%B qui parcourt les dossiers fils (1\1, 1\2, 1\3, 2\1, 2\2, etc) {
........Le if qu'on touche pas, à part qu'il faille mettre %dossier%\%%A\%%B\ à la place de %dossier%\%%A à chaque fois
....}
}
Okay

Visiter le site web du posteur Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Rechercher et lister 
Salut,

Mad Un truc m'échape... comment lui faire ouvrir les dossiers qui se trouvent dans mon dossier initial "0"
Je pense qu'il me manque un truc sur le %%B et sur le %%C.... Non??
Sad


@echo off

:: Extention inconnue ou non existante? - variables ? adapter :
set fichier=docte
set recherche=RELE-RECO

:: Exemple : si ce batch est placé dans C:\user\%username%\, et que les dossiers à traiter sont sur le bureau,
:: Le ".\" est très important, ça évite une erreur si un fichier est nommé "Desktop", avec le ".\" on montre bien au batch que c'est un dossier qu'on cherche

:: écrase le fichier si il existe
echo.>liste.log

echo.
echo En cours...
echo patientez jusqu'… l'ouverture du fichier contenant la liste...

:: Parcourt tous les dossiers :
for /f "tokens=*" %%A in ('dir /b "C:\Users\Documents\0"') do (
for /f "tokens=*" %%B in ('dir /b') do (
for /f "tokens=*" %%C in ('dir /b') do (

:: Ouvre le fichier s'il existe et y recherche la chaîne :
if exist "%%A\%%B\%%C\%fichier%" (
for /f "tokens=*" %%Z in ('type "%%A\%%B\%%C\%fichier%" ^| find /i "%recherche%"') do (
echo %%C\ >>liste.log
)
)
)
)

)

echo.
echo Termin‚!
echo le fichier s'ouvre...
start "" notepad liste.log
pause
exit



Répondre en citant
Message Rechercher et lister 
Salut, j'ai pas testé, mais ça
Code:
for /f "tokens=*" %%A in ('dir /b "C:\Users\Documents\0"') do (
for /f "tokens=*" %%B in ('dir /b') do (
for /f "tokens=*" %%C in ('dir /b') do (

ça va pas car il faut indiquer à DIR quel dossier explorer!

Code:
for /f "tokens=*" %%A in ('dir /b "C:\Users\Documents\0"') do (
for /f "tokens=*" %%B in ('dir /b "%%A"') do (
for /f "tokens=*" %%C in ('dir /b "%%B"') do (


Et ceci :
Code:
 "%%A\%%B\%%C\%fichier%"

je pense que tu dois tous les remplacer par ça
Code:
 "C:\Users\Documents\0\%%A\%%B\%%C\%fichier%"
car DIR/B n'envoie que le nom de fichier, il faut prendre le fichier depuis la racine (C:\) pour être sûr que le IF exist fonctionne!


est mieux, si ça ne marche toujours pas, dis moi, c'est qu'il doit y avoir autre chose, et je verrai ça demain à tête reposée Okay




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Re: Rechercher et lister 
Variotrail a écrit:
Salut,

Mad Un truc m'échape... comment lui faire ouvrir les dossiers qui se trouvent dans mon dossier initial "0"
Je pense qu'il me manque un truc sur le %%B et sur le %%C.... Non??
Sad


@echo off

:: Extention inconnue ou non existante? - variables ? adapter :
set fichier=docte
set recherche=RELE-RECO

:: Exemple : si ce batch est placé dans C:\user\%username%\, et que les dossiers à traiter sont sur le bureau,
:: Le ".\" est très important, ça évite une erreur si un fichier est nommé "Desktop", avec le ".\" on montre bien au batch que c'est un dossier qu'on cherche

:: écrase le fichier si il existe
echo.>liste.log

echo.
echo En cours...
echo patientez jusqu'… l'ouverture du fichier contenant la liste...

:: Parcourt tous les dossiers :
for /f "tokens=*" %%A in ('dir /b "C:\Users\Documents\0"') do (
for /f "tokens=*" %%B in ('dir /b') do (
for /f "tokens=*" %%C in ('dir /b') do (

:: Ouvre le fichier s'il existe et y recherche la chaîne :
if exist "%%A\%%B\%%C\%fichier%" (
for /f "tokens=*" %%Z in ('type "%%A\%%B\%%C\%fichier%" ^| find /i "%recherche%"') do (
echo %%C\ >>liste.log
)
)
)
)

)

echo.
echo Termin‚!
echo le fichier s'ouvre...
start "" notepad liste.log
pause
exit



PAR pitié
utilise ce code fonctionnel à 1000% PLEASE

Code:
@echo off&setlocal EnableDelayedExpansion&chcp 28591 > nul
title Créé par Flammrock
 
set /a nb_docte=0
set /a nb_docte_RENE=0
echo;Début du traitement :&echo;&echo;
type nul>list.txt
for /f "tokens=*" %%a in ('dir /b/s /a:-d docte') do (
  echo;%%~a {
  set /a nb_docte+=1
  find /v "RENE" "%%~a">nul
  if not "!errorlevel!"=="0" (
    set /a nb_docte_RENE+=1
    echo;     Contient la chaîne de caractère 'RENE' : VRAI
    echo;%%~a >> list.txt
   echo;     Chemin du fichier enregistré dans : 'list.txt'
  ) else (
    echo;     Contient la chaîne de caractères 'RENE' : FAUX
  )
  echo;}&echo;&echo;
)
echo;Traitement terminé&start "" notepad list.txt
echo;&echo;Nombre total de fichiers en .docte : !nb_docte!
echo;Nombre total de fichiers .docte contenant la chaîne de catactères 'RENE' : !nb_docte_RENE!
>nul ping -n -1 localhost





______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message Chercher et Lister 
Merci Hugo7 pour ton petit programme et tes explications. j'ai réussi à me corriger.

Okay



Répondre en citant
Message Rechercher et lister 
Si ton problème est résolu, n'oublie pas d'éditer ton topic et de rajouter un [R] devant le titre Okay




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message [R] chercher dans dossiers en cascade et lister [R] 
voici la solution Mr. Green

@echo off

:: Extention inconnue ou non existante? - variables ? adapter :
set fichier=docte
set recherche=RELE

:: Exemple : si ce batch est placé dans C:\user\%username%\, et que les dossiers à traiter sont sur le bureau,
:: Le ".\" est très important, ça évite une erreur si un fichier est nommé "Desktop", avec le ".\" on montre bien au batch que c'est un dossier qu'on cherche

:: écrase le fichier si il existe
echo.>liste.log

echo.
echo En cours...
echo Analyse dans dossier Perso
echo patientez jusqu'… l'ouverture du fichier contenant la liste...

:: Parcourt tous les dossiers :
for /f "tokens=*" %%A in ('dir /b "C:\Users\bibi\Documents\Perso\0"') do (
for /f "tokens=*" %%B in ('dir /b "C:\Users\bibi\Documents\Perso\0\%%A"') do (

:: Ouvre le fichier s'il existe et y recherche la chaîne :
if exist "C:\Users\bibi\Documents\Perso\0\%%A\%%B\%fichier%" (
for /f "tokens=*" %%Z in ('type "C:\Users\bibi\Documents\Perso\0\%%A\%%B\%fichier%" ^| find /i "%recherche%"') do (
echo %%B >>liste.log
)
)
)

)

echo.
echo Termin‚!
echo le fichier s'ouvre...
start "" notepad liste.log
pause
exit



Répondre en citant
Message Rechercher et lister 
RIP Flammarock qui se prends des vents xDD




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message Rechercher et lister 
bonjour,
ça me fait de la peine, en plus un Flam


Xenoxis a écrit:
RIP Flammarock qui se prends des vents xDD


Citation:

Oui, et c'est bien dommage, car son approche est plus intéressante et plus rapide, si ce n'est qu'il a fait une erreur dans les paramètres de find (moins bien que findstr au passage), également dans la condition qui le suit et qu'il y a un peu trop de fioritures inutiles, car dans les faits ça peut se résumer en 3, 4 lignes. Son approche c'est ce qu'on pourrait appeler la recherche minutieuse.

Bien sûr, il y en a d'autres, dont une qui est énormément plus rapide, mais un tout petit peu moins précise où on se contentera de "findstr" avec les paramètres "/sm" ou "/sim".

Code:
findstr /sim "chaine" "chemin_racine\docte"

Ça, ça liste tous les fichiers contenant la chaine recherchée.
Si on veut les dossiers Parent, on l'intègre dans une boucle "for /f" et on utilise la substitution de références.





Message Rechercher et lister 


Montrer les messages depuis:
Répondre au sujet Page 2 sur 2
Aller à la page: <  1, 2
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch