2016-02-23 15 views
5

Bir Windows kabuk komutunu >|>>|<|<< işleçleriyle yeniden yönlendirmeyi biliyorum, ancak bir FOR komutunda kullanılan komutlar için bunu başaramıyorum? ÖrneğinWindows toplu iş kümesinde bir FOR komutunu yeniden yönlendirmek için

:

Görüyorsunuz
for /f "usebackq tokens=*" %%I in (`__COMMAND__ 2>nul`) do (
    set MYVAR=%%I 
) 

, burada sessizde bu __COMMAND__ ait stderr'yi istiyorum. Kabuk, o yerde bir 2 beklemediğini şikayet ediyor (diğer yönlendirmeler için aynı davranış).

Burada kimse yardım edebilir mi?

cevap

5
for /f "usebackq tokens=*" %%I in (`__COMMAND__ 2^>nul`) do (
    set MYVAR=%%I 
) 

in this case yönlendirme ve koşullu yürütme operatörleri, düzeltme kaçan gerekir. çift ​​tırnak

Veya koymak her şey: delayed expansion kullanma

for /f "usebackq tokens=*" %%I in (`"__COMMAND__ 2>nul"`) do (
    set MYVAR=%%I 
) 

da mümkündür:

@echo off 

setlocal enableDelayedExpansion 

set "command=__COMMAND__ 2>nul" 

for /f "usebackq tokens=*" %%I in (`!command!`) do (
    set MYVAR=%%I 
) 
+0

Çalışıyor! Bu muhtemelen bu aptal soru için mümkün olan en kapsamlı cevap olacaktır, bu yüzden şimdi kabul edeceğim. Teşekkürler @npocmaka! – Campa

İlgili konular