çıktısını windows * .cmd betiğinde env değişkenine yönlendiren herhangi bir araç var mı?


3

Bu şekilde kullanmak demek istiyorum:

echo some data | this-tool-m-searching-for -vn myvariable

veya

time | this-tool-m-searching-for -vn current_time

vb..

ve sonra

echo %myvariable%

some datavb üretmek ...

Bu sadece yankı ya da zamanla ilgili değil, stdout'a çıktı veren herhangi bir programı kastediyorum.


1
Düşünün echo %TIME%ve echo %DATE%. Açık robvanderwoude.com Eğer inceliyorlar konuyu dokunur kod bol bulabilirsiniz.
0xC0000022L

Yanıtlar:


3

Bu olağan inşaat, inanıyorum:

for /F %i in ('time /t') do set current_time=%i

(her zamanki gibi, bir komut dosyasında yüzde işaretlerinin iki katına çıkarılması gerekir.)

Garip olsa da başka bir inşaat:

time /t > tempfile.txt
set /p current_time= < tempfile.txt

Geçici dosyadan kaçınmanın bir yolu yok gibi görünüyor; Eğer bir boru kullanırsanız, set komutu bir alt işlemde gerçekleşir. (Bazı durumlarda çıktıyı toplu komut dosyanızın ikinci bir kopyasına aktarabilirsiniz, ancak bu tür işlemler çok çirkin hızlı olabilir.)

Ek

Son noktama kadar genişletmek için, yorumlardaki bir soruya cevaben, çıktıyı yeni bir örneğe yönlendiren örnek bir toplu iş dosyası:

if "%1" NEQ "" @goto %1
:step1
time /t | %0 step2
goto :eof
:step2
set /p current_time=
echo %current_time%
rem processing here...

Bu çözümün daha karmaşık toplu komut dosyaları için iyi ölçeklendirdiğini sanmıyorum.


Evet, ancak %i( %%ibanyo dosyasında) değişkenini genişletir ve program çıktısı bazı özel karakterler içeriyorsa, başınız dertte demektir. Pipe'un bu sorunu yok.
rsk82

İnsanlar komut dosyası komutları ile harika şeyler yaparlar, ancak benim için özel karakterlerle uğraşmanız gerekiyorsa, bunun yerine her zaman kurtarmayı ve vbscript veya powershell'i kullanmanızı öneririm.
Harry Johnston,

Biliyorum ama çok fazla * .cmd yazdım ve iyi çalışıyor, tek zayıf link burada, bu küçük araç ve ben kurtardım.
rsk82

Başka bir olası yaklaşım ekledim.
Harry Johnston

set komutunu bir boru ile nasıl kullanırsınız? Echo abc görüyorum | set / pa = <- yapmaz.
barlop

2

Export.exe'yi deneyin , tam olarak neyin peşindesiniz onu yapıyor gibi görünüyor.


Serin, ama bir 'biraz' şişirilmiş olsa - çok küçük işlevsellik için 216kB .... Ve boru aracılığıyla yapmasına izin vermiyor.
rsk82

Kaynak kodun yokluğunda, bu araçla dikkatli olmanızı tavsiye ederim. Reklamı yapıldığı gibi çalışıyorsa, DLL ekleme veya ana süreç üzerinde eşit derecede kötü bir şey yapıyor olması gerekir; bu da beklenmeyen yan etkileri olabileceği anlamına gelir.
Harry Johnston,

(Ben de yerinde olsaydım, birkaç çevrimiçi virüs / kötü amaçlı yazılım tarayıcısından da geçirirdim.)
Harry Johnston

Ve sadece bazı çirkin hatalar ortaya çıktı, bir ana sürece yazma konusunda bir şeyler oldu.
rsk82

virusscan.jotti.org/pl/scanresult/… - hepsi tamam, kalbimden bir taş düştü
rsk82
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.