BATCH %21 devient ! en expansion retardée

Résolu/Fermé
lenainjaune Messages postés 676 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 4 décembre 2024 - Modifié par lenainjaune le 23/02/2012 à 22:34
lenainjaune Messages postés 676 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 4 décembre 2024 - 10 mai 2012 à 11:23
Bonjour à tous,

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...

1 réponse

lenainjaune Messages postés 676 Date d'inscription mercredi 7 mai 2008 Statut Contributeur Dernière intervention 4 décembre 2024 52
10 mai 2012 à 11:23
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
0