Chercher deux fichiers dans répertoires différents et variabiliser la résultat
Résolu/Fermé
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
-
1 août 2019 à 16:05
barnabe0057 Messages postés 14453 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 24 novembre 2024 - 2 août 2019 à 15:15
barnabe0057 Messages postés 14453 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 24 novembre 2024 - 2 août 2019 à 15:15
A voir également:
- Chercher deux fichiers dans répertoires différents et variabiliser la résultat
- Comment réduire la taille d'un fichier - Guide
- Fusionner deux fichiers excel - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
3 réponses
barnabe0057
Messages postés
14453
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
24 novembre 2024
4 917
1 août 2019 à 17:32
1 août 2019 à 17:32
Salut,
Facile à faire mais faut pas être pressé, surtout si tu as une grosse arborescence :
Le fait que les fichiers se trouvent à chaque fois dans bin et runtime est anecdotique, ça ne nous aide en rien.
Facile à faire mais faut pas être pressé, surtout si tu as une grosse arborescence :
@echo off
Setlocal EnableExtensions DisableDelayedExpansion
chcp 28591 >nul
call :recherche "toto.bat" resultat1
call :recherche "titi.bat" resultat2
echo. & echo Resultat1 = %resultat1%
echo. & echo Resultat2 = %resultat2%
echo. & pause
exit
:recherche
for %%A in (C,D) do (
%%A:
for /f "delims=" %%J in ('2^>nul dir /b /a-d /s %1') do set %2=%%J
)
goto :eof
Le fait que les fichiers se trouvent à chaque fois dans bin et runtime est anecdotique, ça ne nous aide en rien.
barnabe0057
Messages postés
14453
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
24 novembre 2024
4 917
2 août 2019 à 09:50
2 août 2019 à 09:50
Voilà la nouvelle version :
@echo off
Setlocal EnableExtensions EnableDelayedExpansion
chcp 28591 >nul
set cible=toto.bat
for %%A in (C,D) do (
%%A:
for /f "delims=" %%J in ('2^>nul dir /b /a-d /s "%cible%"') do (
(echo %%~pnxJ | findstr "bin\\%cible%" >nul) && set resultat1=%%J
(echo %%~pnxJ | findstr "runtime\\%cible%" >nul) && set resultat2=%%J
)
)
echo. & echo Resultat1 = !resultat1!
echo. & echo Resultat2 = !resultat2!
echo. & pause
exit
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
2 août 2019 à 10:45
2 août 2019 à 10:45
Merci pour ton implication Barnabe ;-)
Effectivement je suis conscient que ma demande est un peu tordue...
D'ailleurs, de mon côté le script ne fonctionne pas.
ça marche pour toi ?
En passant, peux -tu stp me dire à quoi sert la ligne suivante ?:
chcp 28591 >nul
Merci encore
Effectivement je suis conscient que ma demande est un peu tordue...
D'ailleurs, de mon côté le script ne fonctionne pas.
ça marche pour toi ?
En passant, peux -tu stp me dire à quoi sert la ligne suivante ?:
chcp 28591 >nul
Merci encore
barnabe0057
Messages postés
14453
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
24 novembre 2024
4 917
>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
2 août 2019 à 10:57
2 août 2019 à 10:57
Cette commande modifie le codepage, elle est généralement utilisée pour afficher correctement les caractères accentués.
Si le script ne fonctionne pas, à mon avis ça provient du filtre de la commande FINDSTR.
En effet il y a une bizarrerie dans ta demande : les arborescences windows utilisent le \ tandis que les arborescences GNU/Linux utilisent le / . Ce script est un script windows mais toi tu cherches une arborescence Linux, je ne comprends pas très bien.
Si le script ne fonctionne pas, à mon avis ça provient du filtre de la commande FINDSTR.
En effet il y a une bizarrerie dans ta demande : les arborescences windows utilisent le \ tandis que les arborescences GNU/Linux utilisent le / . Ce script est un script windows mais toi tu cherches une arborescence Linux, je ne comprends pas très bien.
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
2 août 2019 à 11:15
2 août 2019 à 11:15
Tu as raison nous sommes bien sur du "\"
Ma demande initiale était correcte mais pas ma réponse qui a suivi (c'est mon côté étourdi ça !)
En fait, de mon côté quand je lance ton script, la recherche a l'air de bien se faire mais celle-ci n'affiche au final aucun résultat (alors que j'ai bien mes deux fichiers toto.bat dans les arborescences ~\bin et ~\runtime)
Est-ce que ton script est fonctionnel dans n'importe quel emplacement du serveur ?
Ma demande initiale était correcte mais pas ma réponse qui a suivi (c'est mon côté étourdi ça !)
En fait, de mon côté quand je lance ton script, la recherche a l'air de bien se faire mais celle-ci n'affiche au final aucun résultat (alors que j'ai bien mes deux fichiers toto.bat dans les arborescences ~\bin et ~\runtime)
Est-ce que ton script est fonctionnel dans n'importe quel emplacement du serveur ?
barnabe0057
Messages postés
14453
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
24 novembre 2024
4 917
>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
Modifié le 2 août 2019 à 11:31
Modifié le 2 août 2019 à 11:31
Ok pour le \ le script devrait donc fonctionner.
Le script cherche dans C: et D: comme demandé initialement, il peut être lancé de n'importe quel endroit.
Le script cherche dans C: et D: comme demandé initialement, il peut être lancé de n'importe quel endroit.
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
Modifié le 2 août 2019 à 14:07
Modifié le 2 août 2019 à 14:07
barnabe0057
Messages postés
14453
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
24 novembre 2024
4 917
Modifié le 2 août 2019 à 14:59
Modifié le 2 août 2019 à 14:59
Voilà la correction du problème :
J'espère que c'est bon cette fois-ci.
Le problème vient de la commande pour changer de disque (C: ou D:), en fait si on se trouve déjà sur C: mais qu'on veut remonter à la racine, la commande C: n'a aucun effet il faut utiliser cd\ à la place.
@echo off
Setlocal EnableExtensions EnableDelayedExpansion
chcp 28591 >nul
set cible=toto.bat
for %%A in (C,D) do (
echo %CD% | find /i "%%A:" && cd\ || %%A:
for /f "delims=" %%J in ('2^>nul dir /b /a-d /s "%cible%"') do (
(echo %%~pnxJ | findstr /i "bin\\%cible%" >nul) && set resultat1=%%J
(echo %%~pnxJ | findstr /i "runtime\\%cible%" >nul) && set resultat2=%%J
)
)
echo. & echo Resultat1 = !resultat1!
echo. & echo Resultat2 = !resultat2!
echo. & pause
exit
J'espère que c'est bon cette fois-ci.
Le problème vient de la commande pour changer de disque (C: ou D:), en fait si on se trouve déjà sur C: mais qu'on veut remonter à la racine, la commande C: n'a aucun effet il faut utiliser cd\ à la place.
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
2 août 2019 à 15:04
2 août 2019 à 15:04
Ah ouais ! c'est bien mieux :-)
Par contre, (je vais être un peu chiant), sais-tu pourquoi quand on lance le programme, on a la ligne "C:\Windows\system32" qui s'affiche en haut de la fenêtre de recherche ?
Sinon, c'est nickel.
J'apprécie beaucoup ton aide. Encore merci ! :-)
Par contre, (je vais être un peu chiant), sais-tu pourquoi quand on lance le programme, on a la ligne "C:\Windows\system32" qui s'affiche en haut de la fenêtre de recherche ?
Sinon, c'est nickel.
J'apprécie beaucoup ton aide. Encore merci ! :-)
barnabe0057
Messages postés
14453
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
24 novembre 2024
4 917
>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
Modifié le 2 août 2019 à 15:10
Modifié le 2 août 2019 à 15:10
Voilà une correction :
@echo off
Setlocal EnableExtensions EnableDelayedExpansion
chcp 28591 >nul
set cible=toto.bat
for %%A in (C,D) do (
(echo %CD% | find /i "%%A:" >nul) && cd\ || %%A:
for /f "delims=" %%J in ('2^>nul dir /b /a-d /s "%cible%"') do (
(echo %%~pnxJ | findstr /i "bin\\%cible%" >nul) && set resultat1=%%J
(echo %%~pnxJ | findstr /i "runtime\\%cible%" >nul) && set resultat2=%%J
)
)
echo. & echo Resultat1 = !resultat1!
echo. & echo Resultat2 = !resultat2!
echo. & pause
exit
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
2 août 2019 à 15:14
2 août 2019 à 15:14
Ah bizarre, il me semblait que je n'avais pas cette ligne précédemment.
En tout cas, encore merci.
Bon week-end et peut être à bientôt pour de nouvelles aventures ;-)
En tout cas, encore merci.
Bon week-end et peut être à bientôt pour de nouvelles aventures ;-)
barnabe0057
Messages postés
14453
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
24 novembre 2024
4 917
>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
2 août 2019 à 15:15
2 août 2019 à 15:15
Merci bon week-end également !
A bientôt.
A bientôt.
2 août 2019 à 08:42
Toujours aussi efficace à ce que je vois ! :-)
Ceci dit, tu as omis un détail important dans ton code:
Les deux fichiers ont, en effet, le même nom ("toto.bat") et les seuls qui m'intéressent sont situé dans les sous-dossiers ~/bin et ~/runtime
Je précise les dossiers, car il peut très bien y avoir d'autres fichiers "toto.bat" sur mon serveur mais dans d'autres répertoires (et qui donc ne m'intéressent pas)
Tu as une idée ?
@+
2 août 2019 à 09:23
Je vais voir ce qu'on peut faire.