[BATCH] for dans un seul niveau de sous répertoire
Fermé
Pierre Goudat
-
27 juil. 2017 à 11:50
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 - 28 juil. 2017 à 21:38
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 - 28 juil. 2017 à 21:38
A voir également:
- [BATCH] for dans un seul niveau de sous répertoire
- Fichier batch - Guide
- Comment mettre plusieurs pdf en un seul - Guide
- Mise a niveau windows 7 vers 10 - Guide
- Download instagram for pc - Télécharger - Divers Communication
- Saveaspdf.exe for office 2007 - Télécharger - Bureautique
6 réponses
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 908
Modifié le 27 juil. 2017 à 18:48
Modifié le 27 juil. 2017 à 18:48
Bonjour,
Essaie comme ça :
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Essaie comme ça :
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"
)
)
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Bonjour Barnabe,
merci de votre réponse, j'ai effectivement essayé votre solution et on y est presque je pense.
En effet, le script trouve bien le sous dossier avec un *.prj cependant lorsqu'il exécute le *.prj dans le second for, il n'est pas au bon chemin.
Par exemple première boucle le script trouve un *.prj ici :
WORKSPACE\SousDossier1\toto.prj
cependant lorsqu'il essaie de l'exécuter, il envoie le chemin suivant :
WORKSPACE\toto.prj
Bonne journée,
merci de votre réponse, j'ai effectivement essayé votre solution et on y est presque je pense.
En effet, le script trouve bien le sous dossier avec un *.prj cependant lorsqu'il exécute le *.prj dans le second for, il n'est pas au bon chemin.
Par exemple première boucle le script trouve un *.prj ici :
WORKSPACE\SousDossier1\toto.prj
cependant lorsqu'il essaie de l'exécuter, il envoie le chemin suivant :
WORKSPACE\toto.prj
Bonne journée,
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 908
Modifié le 28 juil. 2017 à 11:54
Modifié le 28 juil. 2017 à 11:54
Ok j'ai corrigé le problème :
Bonne journée également.
@echo off
setlocal enableextensions
set WORKSPACE=D:\Control.slave\workspace\TRC9110_Banc_OEDP_B0005_020
cd /d %WORKSPACE%
for /f "tokens=*" %%A in ('dir /b /ad "%WORKSPACE%"') do (
for /f "tokens=*" %%G in ('2^>nul dir /b /a-d "%%~dpnA\*.prj"') do (
"%COMPILO_PATH%\compile.exe" -release "%%~dpG%%~nA\%%~nxG"
)
)
pause
Endlocal
exit
Bonne journée également.
la réponse au script :
architecture :
>for /F "tokens=*" %A in ('dir /b /ad "D:\Control.slave\workspace\TRC9110_Banc_OEDP_B0005_020"') do (for /F "tokens=*" %G in ('dir /b /a-d "%~dpnA\*.prj"') do ("C:\Program Files\National Instruments\CVI2012\compile.exe" -release "%~dpnxG" ) )
>(for /F "tokens=*" %G in ('dir /b /a-d "D:\Control.slave\workspace\TRC9110_Banc_OEDP_B0005_020\\*.prj"') do ("C:\Program Files\National Instruments\CVI2012\compile.exe" -release "%~dpnxG" ) )
Fichier introuvable
>(for /F "tokens=*" %G in ('dir /b /a-d "D:\Control.slave\workspace\TRC9110_Banc_OEDP_B0005_020\BurnIn_TRC9110_2C\*.prj"') do ("C:\Program Files\National Instruments\CVI2012\compile.exe" -release "%~dpnxG" ) )
>("C:\Program Files\National Instruments\CVI2012\compile.exe" -release "D:\Control.slave\workspace\TRC9110_Banc_OEDP_B0005_020\BurnIn_TRC9110.prj" )
Cannot open file 'D:\Control.slave\workspace\TRC9110_Banc_OEDP_B0005_020\BurnIn_TRC9110.prj'.
architecture :
TRC9110_Banc_OEDP_B0005_020 (racine du workspace)
=> BurnIn_TRC9110_2C (dossier)
=> BurnIn_TRC9110.prj (fichier)
Bonjour,
Je viens de l'essayer sur mon projet en question, ça a l'air de fonctionner ! je te remercie. je vais l'essayer sur d'autres projets de plus grande ampleur.
je ne comprend pas bien cependant les lignes suivantes :
"%%~dpG%%~nA\%%~nxG"
('2^>nul dir /b /a-d "%%~dpnA\*.prj"')
pourrait tu m'expliquer leur signification ?
Merci,
Je viens de l'essayer sur mon projet en question, ça a l'air de fonctionner ! je te remercie. je vais l'essayer sur d'autres projets de plus grande ampleur.
je ne comprend pas bien cependant les lignes suivantes :
"%%~dpG%%~nA\%%~nxG"
('2^>nul dir /b /a-d "%%~dpnA\*.prj"')
pourrait tu m'expliquer leur signification ?
Merci,
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 908
Modifié le 28 juil. 2017 à 12:19
Modifié le 28 juil. 2017 à 12:19
Dans l'aide la commande FOR (for /?) tu trouveras ceci :
Pour revenir au script :
Ca sera peut-être plus simple à comprendre comme ça :
%~I - étend %I en supprimant les guillemets (")
%~fI - étend %I en nom de chemin d’accès reconnu
%~dI - étend %I en lettre de lecteur uniquement
%~pI - étend %I en chemin d’accès uniquement
%~nI - étend %I en nom de fichier uniquement
%~xI - étend %I en extension de fichier uniquement
%~sI - chemin étendu contenant uniquement des noms
%~aI - étend %I en attributs du fichier
%~tI - étend %I en date/heure du fichier
%~zI - étend %I en taille du fichier
%~$PATH:I - parcourt les répertoires de la variable
d’environnement PATH et étend %I en nom du
premier fichier reconnu trouvé. Si le nom
variable d’environnement n’est pas défini
que le fichier n’est pas trouvé par la rec
alors ce modificateur étend en chaîne vide
Pour revenir au script :
%%~dpG = D:\Control.slave\workspace\TRC9110_Banc_OEDP_B0005_020
%%~nA = BurnIn_TRC9110_2C
%%~nxG = BurnIn_TRC9110.prj
Ca sera peut-être plus simple à comprendre comme ça :
d = drive (lecteur)
p = path (chemin)
n = nom
x = extension
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour tes précisions, je comprend un peu mieux !
Merci beaucoup de ton aide :)
concernant le "tokens=*" on précise que le séparateur est : * ?
Merci beaucoup de ton aide :)
concernant le "tokens=*" on précise que le séparateur est : * ?
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 908
Modifié le 28 juil. 2017 à 13:45
Modifié le 28 juil. 2017 à 13:45
Non le séparateur est indiqué par delims, pas par tokens
Ici tokens=* n'est pas obligatoire puisque par défaut il vaut déjà *, mais je le met par habitude.
Ici tokens=* n'est pas obligatoire puisque par défaut il vaut déjà *, mais je le met par habitude.
Pierre Goudat
>
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
28 juil. 2017 à 13:42
28 juil. 2017 à 13:42
que signifie donc tokens ?
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 908
>
Pierre Goudat
Modifié le 28 juil. 2017 à 13:53
Modifié le 28 juil. 2017 à 13:53
tokens indique les parties que tu souhaites utiliser, quand tu découpes une chaîne de caractères avec FOR /F
Par exemple tu as un fichier texte qui contient une ou plusieurs lignes, par exemple : bonjour il fait beau aujourd'hui
Tu vas parcourir le fichier texte et traiter chaque ligne grâce à FOR /F :
Observe la différence avec la commande précédente :
Par exemple tu as un fichier texte qui contient une ou plusieurs lignes, par exemple : bonjour il fait beau aujourd'hui
Tu vas parcourir le fichier texte et traiter chaque ligne grâce à FOR /F :
for /f "tokens=1,2,3,4,5 delims= " %%A in (fichier.txt) do (echo %%A %%B %%C %%D %%E)
pause
Observe la différence avec la commande précédente :
for /f "tokens=2,3,4 delims= " %%A in (fichier.txt) do (echo %%A %%B %%C)
pause
Pierre Goudat
>
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
28 juil. 2017 à 14:34
28 juil. 2017 à 14:34
Merci pour te précisions
j'étais entrain de penser, ce code fonctionne t'il si le *.prj n'est pas dans un sous répertoire du workspace, mais directement à la racine du workspace ?
Bonne journée,
Bonne journée,
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 908
28 juil. 2017 à 15:31
28 juil. 2017 à 15:31
Non il faut le modifier légèrement si tu veux prendre en compte ces fichiers.
Je dois m'absenter, à plus tard peut-être.
Je dois m'absenter, à plus tard peut-être.
Pierre Goudat
>
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
28 juil. 2017 à 17:27
28 juil. 2017 à 17:27
Merci de ton aide,
bon weekend
bon weekend
barnabe0057
Messages postés
14440
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 avril 2024
4 908
>
Pierre Goudat
28 juil. 2017 à 21:38
28 juil. 2017 à 21:38
Merci bon week-end également.