BATCH %21 devient ! en expansion retardée
Résolu
lenainjaune
Messages postés
766
Statut
Contributeur
-
lenainjaune Messages postés 766 Statut Contributeur -
lenainjaune Messages postés 766 Statut Contributeur -
Bonjour à tous,
J'ai le code BATCH suivant :
Je cherche à décoder un chemin de fichier, encodé au format urlencode (ex: %20 -> espace), que l'on trouve précisément, dans les URL.
Je bute sur un point : celui de remplacer le %21 en '!' (point-exclamation).
Le problème, c'est que j'utilise l'expansion retardée, donc, le caractère utilisé pour récupérer les variables, est aussi '!' (rappel : sans expansion %ma_variable%, avec expansion !ma_variable!).
L'aide MS-DOS de set /? dit ceci :
Je soupçonne le traitement, de s'arrêter au 1er caractère ! après le =, et donc, comme il n'y a rien entre le = et le premier !, il considèrerait que ma chaine est vide ...
Donc ma question est :
Comment remplacer un éventuel %21 par le '!' ?
Est-ce que c'est possible ?
Je vous remercie d'avance
Cordialement
lnj
La transe c'est l'immensité de l'intime...
J'ai le code BATCH suivant :
setlocal enableDelayedExpansion [...] for /f "tokens=1 delims=<" %%c in ("%%b") do @( set a=%%c set a=!a:%%20= ! <- remplacement OK ! set a=!a:%%21=^!! <- remplacement inopérant, mais pas d'erreur ! [...]
Je cherche à décoder un chemin de fichier, encodé au format urlencode (ex: %20 -> espace), que l'on trouve précisément, dans les URL.
Je bute sur un point : celui de remplacer le %21 en '!' (point-exclamation).
Le problème, c'est que j'utilise l'expansion retardée, donc, le caractère utilisé pour récupérer les variables, est aussi '!' (rappel : sans expansion %ma_variable%, avec expansion !ma_variable!).
L'aide MS-DOS de set /? dit ceci :
La substitution de la variable d'environnement a été améliorée comme suit :
%PATH:ch1=ch2%
développe la variable d'environnement PATH, remplaçant chaque
occurrence de "ch1" dans le résultat développé par "ch2". "ch2" peut être
une chaîne vide pour supprimer toutes les occurrences de "ch1" de la sortie
développée.
Je soupçonne le traitement, de s'arrêter au 1er caractère ! après le =, et donc, comme il n'y a rien entre le = et le premier !, il considèrerait que ma chaine est vide ...
Donc ma question est :
Comment remplacer un éventuel %21 par le '!' ?
Est-ce que c'est possible ?
Je vous remercie d'avance
Cordialement
lnj
La transe c'est l'immensité de l'intime...
A voir également:
- BATCH %21 devient ! en expansion retardée
- Fichier batch - Guide
- Indicatif +21 - Forum Mobile
- +33 1 87 21 77 77 ✓ - Forum Mobile
- 0021 622763847 ✓ - Forum Mobile
- Batch installation id c'est quoi - Forum Mobile
1 réponse
Problème résolu mais par un autre site !
Je laisse tout de même le lien au cas où quelqu'un serait intéressé :
https://openclassrooms.com/forum/sujet/batch-expansion-retardee-78179#r7150180
Je laisse tout de même le lien au cas où quelqu'un serait intéressé :
https://openclassrooms.com/forum/sujet/batch-expansion-retardee-78179#r7150180