Supprimer en premier et dernier caractère d'une Chaîne de caractères dans un fichier de commandes Windows

J'ai la chaîne suivante à l'intérieur de mon fichier de commandes Windows:

"-String"

La chaîne contient également de la twoe des guillemets au début et à la fin de la chaîne, afin, comme il est écrit ci-dessus.

Je tiens à dépouiller les premiers et derniers caractères de sorte que je reçois la chaîne suivante:

-String

J'ai essayé ceci:

set currentParameter="-String"
echo %currentParameter:~1,-1%

Ceci affiche la chaîne qu'elle devrait l'être:

-String

Mais quand j'essaie de stocker les édité chaîne comme celle-ci, il échoue:

set currentParameter="-String"
set currentParameter=%currentParameter:~1,-1%
echo %currentParameter%

Rien n'est imprimé. Que dois-je faire de mal?


C'est vraiment étrange. Lorsque je supprime les caractères comme ceci cela fonctionne:

set currentParameter="-String"
set currentParameter=%currentParameter:~1,-1%
echo %currentParameter%

il imprime:

-String

Mais en réalité, mon lot est un peu plus compliqué et il il ne fonctionne pas. Je vais vous montrer ce que j'ai programmé:

@echo off

set string="-String","-String2"

Set count=0
For %%j in (%string%) Do Set /A count+=1


FOR /L %%H IN (1,1,%COUNT%) DO ( 

    echo .
        call :myFunc %%H
)
exit /b

:myFunc
FOR /F "tokens=%1 delims=," %%I IN ("%string%") Do (

    echo String WITHOUT stripping characters: %%I 
    set currentParameter=%%I
    set currentParameter=%currentParameter:~1,-1%

    echo String WITH stripping characters: %currentParameter% 

    echo .

)
exit /b   

:end

Et la sortie est:

.
String WITHOUT stripping characters: "-String"
String WITH stripping characters:
.
.
String WITHOUT stripping characters: "-String2"
String WITH stripping characters: ~1,-1
.

Mais ce que je veux est:

.
String WITHOUT stripping characters: "-String"
String WITH stripping characters: -String
.
.
String WITHOUT stripping characters: "-String2"
String WITH stripping characters: -String2
.
Votre exemple ne fonctionne (comme prévu), il doit y avoir un autre bug. Peut-être vous avez essayé ce à l'intérieur d'un bloc?
Je reçois le message suivant: ECHO ist ausgeschaltet (OFF). ~1,-1
Peut-être que c'est parce que ses dans une fonction? :myFunc FOR /F "tokens=%1 delims=," %%I IN ("%processChain1%") Do ( set currentParameter=%%I set currentParameter=%currentParameter:~1,-1% echo %currentParameter% rem java -jar app.jar %%I ) exit /b
La cause est que pour cent de l'expansion est au moment de l'analyse d'un bloc pas au moment de l'exécution. Mais dans votre cas, il peut être résolu avec l' %%~I, ...dynamique nombre de tokens
Juste ce petit ~ a fait le travail...génial. Merci beaucoup

OriginalL'auteur Metalhead89 | 2012-08-22