2010-04-29 26 views
7

UNIX'te here açıkladığımız tekniği kullanarak bir komut dosyasının çıktısını bir ortam değişkenine atayabilirsiniz; ancak Windows eşdeğeri nedir?Windows kabuk komut dosyasında (cmd.exe) bir programın stdout'unu bir ortam değişkenine nasıl atayabilirsiniz?

Bir ortam değişkenini düzeltmeyi amaçlayan bir python yardımcı programım var. Bu betik, basitçe bir dizi karakter yazıyor. Bu sorunun amacı için, programımın python dilinde yazılması gerçektir, bu sadece tek bir metin satırı veren komut isteminden arayabileceğim bir programdır.

I (çalışır) Böyle bir şey yapmak istiyorum:

set WORKSPACE=[ the output of my_util.py ] 

benim yarar normalde yazdırmak istiyorum tam aynı metin içermelidir bu komutu WORKSPACE ortam değişkeninin değerini çalıştırdıktan sonra.

Bu yapılabilir mi? Nasıl?


UPDATE1: İşyerinde Biri önerdi: Üst piton-script env-var çalışma alanı stdout'unu atamak olacaktır Teoride

python util.py | set /P WORKSPACE= 

, ve henüz çalışmıyor, ne Burada yanlış mı gidiyor?

+1

Çoktan soruldu - [Bir pencerede bir değişkende bir komutun sonucunu nasıl alabilirim?] (Http://stackoverflow.com/questions/108439/) –

cevap

11

Kullanımı: Örneğin

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

:

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

... komutu "zaman/t" çalıştırmak ve sonuca env değişkeni "my_env_var" ayarlayacaktır.

Bunu bir .BAT dosyasında çalıştırıyorsanız% A yerine% A kullanmayı unutmayın.

+0

Wow, bu fugly komut dosyası ancak bu sadece çalışabilir. Şimdi deneyeceğim! –

+0

Bir toplu iş dosyası bağlamında% A yerine% A yerine anlamını açıklayabilir misiniz? –

+1

Toplu iş dosyalarında "%", yeniden yüklenen bir karakterdir. Örneğin,% 1 komut satırında iletilen ilk bağımsız değişkene başvurur. Bu nedenle, komut satırı argümanlarına başvurmadığınız bir "%" yi kullanmanız gerektiğinde, "%%" gibi ikiye katlayın. –

İlgili konular