Sono sicuro che sta funzionando bene. Per provarlo, aggiungi SET STR
dopo aver definito il valore e vedrai il valore corretto.
Il problema riscontrato è quando si tenta di echo il valore, la linea in esecuzione diventa: echo >abcd_
. Il >
non è quotato o sfuggito, quindi è semplicemente prendendo l'output di ECHO senza argomenti e orientarli verso un file denominato "abcd_"
Se non ti dispiace vedere le citazioni, poi cambiare linea per echo "%str%"
e Funzionerà.
L'altra opzione è quella di attivare e utilizzare l'espansione ritardata (sto assumendo questo è un codice script batch, e non l'esecuzione sulla riga di comando) si verifica
setlocal enableDelayedExpansion
set soeid=abcd
set "val1=>"
set "val2=_"
set "str=%val1%%soeid%%val2%"
echo !str!
normale espansione %var%
nella fase iniziale, mentre l'interprete sta analizzando la linea. L'espansione ritardata !var!
si verifica alla fine poco prima che venga eseguita. Il reindirizzamento viene rilevato da qualche parte nel mezzo. Ecco perché la normale espansione non funziona: l'interprete vede il carattere espanso >
e lo interpreta come l'operatore di reindirizzamento dell'output. L'espansione ritardata nasconde il carattere >
dall'interprete fino a quando il reindirizzamento non viene analizzato.
Per maggiori informazioni sulla espansione in ritardo, tipo SET /?
dalla riga di comando e leggere a partire dal paragrafo che inizia con "Infine, il supporto per l'ambiente espansione ritardata delle variabili ...".
La prima cosa da digitare dopo "non funziona" è una spiegazione di * come * non funziona. Non possiamo leggere la tua mente o vedere il tuo schermo da qui; tutto quello che dobbiamo andare è ciò che ci dici nella tua domanda. Se vuoi aiuto, devi dirci qual è il problema che stai avendo e come ciò che hai provato non ha funzionato. –