> Tous les forums > Forum Autres langages
 [BATCH] for imbriqué recherche dossier
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Pierre Goudat
  Posté le 27/07/2017 @ 15:09 
Aller en bas de la page 
Nouvel astucien

Bonjour à tous,

j'ai besoin pour un projet d'écrire un code batch avec une imbrication de boucle for. j'ai du mal à trouver une solution concernant la première boucle. Voila ce que je souhaite faire :

Rechercher dans un workspace tous les dossiers appelés (sources ou source ou Source ou Sources) (dossier ou sous dossier) puis pour chaque dossier sources trouvés, copier tous les *.c et les copier dans un autre dossier. Pour la seconde partie c'est déja mis en place et ça fonctionne, mais je bloque sur la première partie, le "trouver tous les dossiers sources"

voici le code jusqu'a présent :

for /r "%WORKSPACE%" %%a in (Sources, sources, Source, source) do (

	for /r "%%a" %%m in (*.c) do (

	        xcopy "%%m" "%WORKSPACE%\KW_TMP\"  /D /Y >> "%WORKSPACE%\KW_LOG.txt"
        )
)

Merci d'avance pour votre aide.

Bonne journée,

Publicité
nomisam
 Posté le 27/07/2017 à 19:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir Pierre Goudat,

Ci-dessous un exemple de ce que je ferais, j'utilise une fonction.

if /I => permet d'ignorer la casse des caractères


for /f %%a in ('dir "%WORKSPACE%" /a:d /b') do call :FCT %%a
goto FIN
:: FONCTION
:FCT
if /I "%1"=="source" goto :CMDE
if /I "%1"=="sources" goto :CMDE
goto :EOF
:CMDE
set REP=%WORKSPACE%\%1
for /f %%m in ('dir "%REP%\*.c" /b') do xcopy "%REP%\%%m" "%WORKSPACE%\KW_TMP\" /D /Y >> "%WORKSPACE%\KW_LOG.txt"
goto :EOF
:FIN


J'espère que çà te sera utile.

Cordialement

nomisam

Pierre Goudat
 Posté le 28/07/2017 à 17:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien

Bonjour,

merci de votre aide, j'ai finalement utilisé une autre méthode :

@echo off
set WORKSPACE=C:\chemin\de\ton\WORKSPACE
cd /D "%WORKSPACE%"
for /r "%WORKSPACE%" %%a in (sources, source) do (
if exist "%%a" call :CopyC %%a
)
pause
exit
:CopyC
for /r "%*" %%m in (*.c) do (
xcopy "%%m" "%WORKSPACE%\KW_TMP\" /D /Y >> "%WORKSPACE%\KW_LOG.txt"
)
GOTO:EOF
Cependant je recherche désormais un moyen de rechercher pas plus loin que 2 ou 3 sous dossiers. avez vous une idée ?
Bonne journée.
Pierre Goudat
 Posté le 31/07/2017 à 11:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien

Bonjour,

Pour expliquer totalement mon problème:

J'ai un workspace pouvant contenir soit un seul projet (un dossier source, des dossiers librairies et instruments) soit plusieurs projets (même chose avec un dossier à la racine du workspace par projet). Je souhaite récupérer tous les *.c et *.h des fichiers sources pour ensuite les placer dans le dossier KW_TMP. Cependant dans l'arborescence du workspace on retrouve également des dossiers librairies et instruments contenant également des *.c et *.h et contenant également parfois des dossiers sources.

Voila tout mon problème. J'ai dans un premier temps récupéré tous les *.c et *.h sans exception, cependant je récupérais tous les fichiers d'instruments et de librairies. j'ai ensuite ciblé seulement les *.c et *.h contenus dans les dossiers appelés "sources" cependant il y a également des fichiers de ce genre dans le dossiers de librairies et instruments. Désormais j'essaie de limiter à quelques sous niveau du workspace, car les sources sont généralement un niveau au dessus des dossiers instruments..

Cependant peut être que vous avez une idée pour me simplifier la vie ? récupérer tous les fichiers *.c et *.h des dossiers sources, cependant si le dossier sources est présent dans un dossier appelé "librairies" ou "instrument" on l'ignore ?

exemple de workspace

WORKSPACE
     => projet1
          => Sources
               => dossiers source1
                   =>fichiers *.c/*.h que je veux récupérer
               => dossier source2
                   =>fichiers *.c/*.h que je veux récupérer
          => librairies
               =>lib1
                    =>sources
                         => fichiers *.c/*.h que je veux ignorer
          => Instruments
               =>instru1
                    =>sources
                         => fichiers *.c/*.h que je veux ignorer



Merci d'avance et bonne journée.



Modifié par Pierre Goudat le 31/07/2017 11:05
Labougie
 Posté le 16/02/2018 à 21:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Il y a longtemps que je n'ai pas fait de batch.

Te voici une idée afin de pouvoir faire une sélection de recherche. Je n'ai proposé que le cadre pour projet1 avec 2 sous choix. Tu peux continuer ainsi avec en + Instruments etc...

Cela se présente ainsi

Pour tes transferts de fichiers regarde de ce cote => setlocal enabledelayedexpansion <=

Le batch est ici.

Lectures 1 & 2.

Labougie

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
129,99 €Ecran 24 pouces AOC 24G2U5/BK (IPS, FullHD, 1 ms, 75 Hz, FreeSync) à 129,99 €
Valable jusqu'au 01 Avril

Amazon propose actuellement l'écran incurvé 24 pouces AOC 24G2U5/BK à 129,99 € alors qu'on le trouve ailleurs à partir de 160 €. Cet écran à rétroéclairage LED dispose d'une dalle IPS Full HD (1920x1080), dispose d'entrées VGA, HDMI et DisplayPort. Grâce à son temps de réponse ultra rapide de 1 ms et à sa fréquence de 75 Hz, compatible FreeSync, il se distingue par sa bonne réactivité ! Il possède les technologies anti-scintillement (Flicker Free) et anti lumière bleue (Eye Care).  


> Voir l'offre
39,99 €Manette Microsoft Xbox One sans fil + câble pour PC et Xbox à 39,99 €
Valable jusqu'au 31 Mars

Amazon fait une promotion sur la manette Microsoft Xbox One sans fil qui passe à 39,99 € livrée gratuitement. On la trouve ailleurs à partir de 55 €. La livraison est gratuite. Sur Xbox One, la connexion se fera sans fil. Pour bénéficier du sans fil sur PC ou Raspberry Pi, vous devrez posséder une connexion Bluetooth ou bien la rajouter avec cet adaptateur par exemple.


> Voir l'offre
67,99 €Carte mémoire SDXC UHS-I U3 SanDisk Extreme Pro 256 Go à 67,99 €
Valable jusqu'au 02 Avril

Amazon fait une superbe vente flash sur la carte mémoire SDXC UHS-I U3 SanDisk Extreme Pro d'une capacité de 256 Go qui passe à 67,99 € livrée gratuitement alors qu'on trouve la carte ailleurs à partir de 100 €. Cette carte mémoire offre des vitesses jusqu'à 95 Mo/s en lecture et 90 Mo/s en écriture et intègre des mécanismes afin de gérer l'usure des cellules de la carte et augmenter ainsi sa durée de vie. Une valeur sûre pour les plus exigeants. 


> Voir l'offre

Sujets relatifs
[Batch] Dossier a rechercher, puis coller dedans.
recherche en batch
[BATCH] for dans un seul sous répertoire
BATCH fermer les fichiers pdf contenus dans un repertoire
Script PHP, listant dossier et fichiers et se connectant a une BDD
Commande batch pour ouvrir plusieurs fichiers windows 8
Git Bash & fichier batch
Editer à la chaîne les raccourcis dans un dossier
Fichier batch : lancer 1 video sur VLC portable
Batch pour importer plusieurs CSV dans Mysql
Plus de sujets relatifs à [BATCH] for imbriqué recherche dossier
 > Tous les forums > Forum Autres langages