2012-02-22 25 views
7

Sto cercando di creare una stringa in batch come questo: > abcd_Batch concatenazione di stringhe

ho una variabile chiamata SOEID, con valore di ABCD. Quindi questo è quello che sto facendo, ma non funziona.

set soeid=abcd 

set "val1=>" 
set "val2=_" 
set "str=%val1%%soeid%%val2%" 

echo %str% 
+5

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

risposta

11

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

+0

Grazie mille ha funzionato bene ora. Il problema è che ho usato echo% str% invece di! Str !. Per favore, potresti spiegarmi la differenza tra i due. – NewQueries

+0

@ NewQueries- Ho esteso la mia risposta con una spiegazione – dbenham