2011-12-22 10 views

risposta

92

Non so nulla di Jenkins, ma sembra che tu stia cercando di accedere alle variabili di ambiente usando una qualche forma di sintassi unix - che non funzionerà.

Se il nome della variabile è WORKSPACE, il valore viene espanso nel batch di Windows utilizzando
%WORKSPACE%. Questa forma di espansione viene eseguita in fase di analisi. Ad esempio, questo stamperà a schermo il valore di luogo di lavoro

echo %WORKSPACE% 

Se è necessario il valore in fase di esecuzione, quindi è necessario utilizzare l'espansione ritardata !WORKSPACE!. L'espansione ritardata non è normalmente abilitata di default. Utilizzare SETLOCAL EnableDelayedExpansion per abilitarlo. L'espansione ritardata è spesso necessaria perché i blocchi di codice tra parentesi vengono analizzati tutti in una volta, quindi un valore assegnato all'interno del blocco non può essere letto più tardi all'interno dello stesso blocco a meno che non si usi l'espansione ritardata.

setlocal enableDelayedExpansion 
set WORKSPACE=BEFORE 
(
    set WORKSPACE=AFTER 
    echo Normal Expansion = %WORKSPACE% 
    echo Delayed Expansion = !WORKSPACE! 
) 

L'uscita del sopra è

Normal Expansion = BEFORE 
Delayed Expansion = AFTER 

Usa HELP SET o SET /? dalla riga di comando per ottenere ulteriori informazioni sulle variabili di ambiente di Windows e le varie opzioni di espansione. Ad esempio, spiega come eseguire operazioni di ricerca/sostituzione e sottostringa.

+1

Mi sono completamente dimenticato di quel piccolo dettaglio schifoso di finestre. Grazie ! – JoxTraex

+0

abbiamo perso così tanto tempo su questo grazie –

+0

@UtsavGupta Sono stato anche bloccato su questo. Stavo usando $ BUILD_ID in precedenza. Ora felice con% BUILD_ID% su Windows. –

20

In Windows è necessario utilizzare %WORKSPACE%.

+0

Si intende il file batch ... – manojlds

+5

Sì. E nel campo "Build/Command/Execute Windows batch command" di Hudson. –