Extraire le chemin d'un nom de fichier complet
Fermé
Greg
-
20 déc. 2018 à 15:01
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 3 janv. 2019 à 22:50
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 3 janv. 2019 à 22:50
A voir également:
- Extraire le chemin d'un nom de fichier complet
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Extraire une video youtube - Guide
- Ouvrir un fichier .bin - Guide
3 réponses
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
Modifié le 20 déc. 2018 à 23:44
Modifié le 20 déc. 2018 à 23:44
Bonjour,
Il faut utiliser les commandes prévues à cet effet :
Il faut utiliser les commandes prévues à cet effet :
for /f "delims=" %%A in ("Mon\Chemin\Fichier.txt-1.0@Projet^(01^)") do echo %%~dpA
Bonjour Barnabe0057 et merci pour la réponse rapide.
Il y a un "mais".
Dans la réponse que j'obtiens avec ta solution, il inclut la racine de travail (répertoire de travail).
Ca donne :
d:\MonRepertoire\De\Travail\Mon\Chemin\
Moi je voudrais qu'il ne reste que
Mon\Chemin
à partir de l'expression
Mon\Chemin\Fichier.txt-1.0@Projet
Je veux vraiement ici isoler toute la chaine de caractères du début jusqu'au dernier "\".
Y a-t-il une solution ?
Greg.
Il y a un "mais".
Dans la réponse que j'obtiens avec ta solution, il inclut la racine de travail (répertoire de travail).
Ca donne :
d:\MonRepertoire\De\Travail\Mon\Chemin\
Moi je voudrais qu'il ne reste que
Mon\Chemin
à partir de l'expression
Mon\Chemin\Fichier.txt-1.0@Projet
Je veux vraiement ici isoler toute la chaine de caractères du début jusqu'au dernier "\".
Y a-t-il une solution ?
Greg.
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
22 déc. 2018 à 13:23
22 déc. 2018 à 13:23
Ok alors il suffit de remplacer %%~dpA par %%~pA
Tout d'abord Bonne Année à toi barnabe0057 !
Je pense qu'il faut oublier la notion de chemin.
Plus globalement, j'ai une chaine de caractère :
Mon\Chemin\Fichier.txt-1.0@Projet
Je veux conserver que :
Mon\Chemin
=> c'est à dire du début de la chaine jusqu'au dernier "\".
C'est ça qui est important : du début de la chaine jusqu'au dernier "\".
Comment puis-je faire ?
Je pense qu'il faut oublier la notion de chemin.
Plus globalement, j'ai une chaine de caractère :
Mon\Chemin\Fichier.txt-1.0@Projet
Je veux conserver que :
Mon\Chemin
=> c'est à dire du début de la chaine jusqu'au dernier "\".
C'est ça qui est important : du début de la chaine jusqu'au dernier "\".
Comment puis-je faire ?
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
Modifié le 2 janv. 2019 à 19:10
Modifié le 2 janv. 2019 à 19:10
Merci bonne année également.
C'est la solution que j'ai donné dans ma dernière réponse :
Si ça ne marche pas chez toi merci d'indiquer le résultat obtenu.
C'est la solution que j'ai donné dans ma dernière réponse :
for /f "delims=" %%A in ("d:\Mon\Chemin\Fichier.txt-1.0@Projet^(01^)") do echo %%~pA
Si ça ne marche pas chez toi merci d'indiquer le résultat obtenu.
Le probleme avec ta solution est qu'elle ajoute systématiquement le chemin du répertoire de travail à la chaine que je lui passe.
Par exemple, lorsque je travaille dans d:\temp et que je passe "\Mon\Chemin\Fichier.txt-1.0@Projet",
je veux obtenir :
"\Mon\Chemin\" ou "Mon\Chemin\" ou "\Mon\Chemin" ou "Mon\Chemin"
mais pas :
"D:\Temp\Mon\Chemin\"
ni
"\Temp\Mon\Chemin\"
Revenons à des traitements de chaine de caractères.
J'ai
"\Mon\Chemin\Fichier.txt-1.0@Projet"
et je veux extraire
"\Mon\Chemin\"
C'est à dire DU DEBUT DE LA CHAINE AU DERNIER "\"
Je pense que comme ça la question plus ciblée.
Comment peut-on faire ça sous MS DOS ?
Par exemple, lorsque je travaille dans d:\temp et que je passe "\Mon\Chemin\Fichier.txt-1.0@Projet",
je veux obtenir :
"\Mon\Chemin\" ou "Mon\Chemin\" ou "\Mon\Chemin" ou "Mon\Chemin"
mais pas :
"D:\Temp\Mon\Chemin\"
ni
"\Temp\Mon\Chemin\"
Revenons à des traitements de chaine de caractères.
J'ai
"\Mon\Chemin\Fichier.txt-1.0@Projet"
et je veux extraire
"\Mon\Chemin\"
C'est à dire DU DEBUT DE LA CHAINE AU DERNIER "\"
Je pense que comme ça la question plus ciblée.
Comment peut-on faire ça sous MS DOS ?
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 921
Modifié le 3 janv. 2019 à 22:57
Modifié le 3 janv. 2019 à 22:57
Ainsi soit-il, si tu ne veux passer par la boucle FOR ça reste faisable mais c'est un peu compliqué, voilà tu es prévenu :
Ce code est à améliorer car il ne prévoit pas un scénario (= si la chaine se termine par "\"). Je m'en occuperai quand j'aurai le temps.
Maintenant dodo.
@echo off
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul
:: -------------------------------------------------------
:: début du programme
:: -------------------------------------------------------
set "chaine=Mon\Chemin\Fichier.txt-1.0@Projet"
echo. & echo ==^>^> %chaine%
set string=%chaine%;
call :count 0
set nb=!compteur!
call :count 1
echo. & echo ==^>^> !ligne!
echo. & pause
exit /b 0
:: -------------------------------------------------------
:: fin du programme
:: -------------------------------------------------------
:: -------------------------------------------------------
:: fonction d'analyse et de récupération de chaine
:: -------------------------------------------------------
:count
set /a compteur=position=0
:boucle
set "car=!string:~%position%,1!"
if "!car!"=="\" (set /a compteur+=1)
set /a position+=1
if %1 EQU 0 (if not "!car!"==";" (goto :boucle))
if %1 EQU 1 (if not "!compteur!"=="!nb!" (set "ligne=!ligne!!car!" & goto :boucle))
goto :eof
Ce code est à améliorer car il ne prévoit pas un scénario (= si la chaine se termine par "\"). Je m'en occuperai quand j'aurai le temps.
Maintenant dodo.