Page 1 sur 1

[BATCH] for dans un seul sous répertoire

Posté : 27 juil. 2017 16:40
par Pierre Goudat
Bonjour à tous,

Je travaille actuellement sur un projet ou j'ai le besoin d'utiliser un script batch. Je souhaite récupérer des fichiers contenues dans un workspace avec l'extension *.prj pour effectuer une action dessus. Cependant je me suis rendu compte que je souhaite seulement récupérer tous les *.prj d'un workspace avec un seul niveau de sous répertoire.

admettons que j'ai l’arborescence suivante :

Code : Tout sélectionner

WORKSPACE
    => Sous Dossier 1
        => [b]fichier.prj[/b]
        => Sous Dossier 2
            => fichier2.prj
    => Sous dossier 2
        => [b]fichier.prj[/b]
        => Sous Dossier 2
            => fichier2.prj

    =>[b]fichier.prj[/b]

je souhaite traiter les fichier.prj en gras mais je ne souhaite pas traiter les fichier2.prj car il sont situé à plus de un sous répertoire du Workspace.

Jusqu'a présent voici mon for :

Code : Tout sélectionner

for /r "%WORKSPACE%" %%a in (*.prj) do (
        "%COMPILO_PATH%\compile.exe" -release "%%a" 
)
que dois-je ajouter au for pour seulement lire jusqu’à un sous répertoire ?

Merci d'avance à tous,

Bonne journée.

Re: [BATCH] for dans un seul sous répertoire

Posté : 27 juil. 2017 18:43
par barnabe0057
Bonjour,

Essaie comme ça :

Code : Tout sélectionner

for /f "tokens=*" %%A in ('dir /b /ad "%WORKSPACE%"') do (
       for /f "tokens=*" %%G in ('dir /b /a-d "%%~dpnA\*.prj"') do ("%COMPILO_PATH%\compile.exe" -release "%%~dpnxG")
)

Re: [BATCH] for dans un seul sous répertoire

Posté : 28 juil. 2017 18:31
par Pierre Goudat
Bonjour,

Merci de votre aide, le problème est ainsi résolu.

Bon weekend.

Re: [BATCH] for dans un seul sous répertoire

Posté : 01 févr. 2018 15:39
par shakes
Après, je pense qu'il y a une instruction encore plus simple avec robocopy
(explication ici pour ceux qui veulent :https://www.malekal.com/robocopy-sauvegarde-de-windows/)

Je connais depuis peu et ca donnerait quelques choses comme ca je pense

ropocopy [DOSS_SOURCE] [DOSS_DESTINTAIRE] *.prj /LEV:1 /E