2010-04-29 12 views
7

In UNIX è possibile assegnare l'output di uno script a una variabile di ambiente utilizzando la tecnica spiegata here - ma qual è l'equivalente di Windows?In Windows shell scripting (cmd.exe) come si assegna lo stdout di un programma a una variabile di ambiente?

Ho un'utilità python che ha lo scopo di correggere una variabile di ambiente. Questo script scrive semplicemente una sequenza di caratteri per lo stdout. Ai fini di questa domanda, il fatto che la mia utilità sia scritta in python è irrilevante, è solo un programma che posso richiamare dal prompt dei comandi che emette una singola riga di testo.

mi piacerebbe fare qualcosa di simile (che funziona):

set WORKSPACE=[ the output of my_util.py ] 

Dopo aver eseguito questo comando il valore della variabile d'ambiente WORKSPACE dovrebbe contenere lo stesso testo esatto che il mio programma di utilità normalmente stampare.

Si può fare? Come?


Update1: Qualcuno al lavoro ha suggerito:

python util.py | set /P WORKSPACE= 

In teoria, che assegnerà lo stdout del pitone-script top della ENV-var lavoro, eppure non funziona, ciò che è sta andando male qui?

+1

E 'stato già chiesto - [Come ottengo il risultato di un comando in una variabile in windows?] (Http://stackoverflow.com/questions/108439/) –

risposta

11

Usa:

for /f "delims=" %A in ('<insert command here>') do @set <variable name>=%A 

Ad esempio:

for /f "delims=" %A in ('time /t') do @set my_env_var=%A 

... verrà eseguito il comando "tempo/t" e impostare la variabile ENV "my_env_var" per il risultato.

Ricordate di usare %% A invece di% A se si sta eseguendo questo all'interno di un file bat.

+0

Wow, è uno script fugace ma è solo potrebbe funzionare Ho intenzione di provarlo ora! –

+0

si può spiegare il significato di %% A piuttosto che% A nel contesto di un file batch? –

+1

Nei file batch, "%" è un carattere prenotato. Ad esempio,% 1 fa riferimento al primo argomento passato sulla riga di comando. Così, nei casi in cui è necessario utilizzare un "%" in cui non stai riferendo argomenti della riga di comando, si raddoppia in su come "%%". –

Problemi correlati