2016-02-23 3 views
5

Ich weiß, wie ein Windows-Shell-Befehl mit den >|>>|<|<<-Operatoren umleiten, aber ich kann es nicht für Befehle in einem FOR Befehl ausführen?Wie ein FOR-Befehl in Windows-Stapel umleiten

Zum Beispiel:

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

Sie sehen, hier würde ich die stderr dieser __COMMAND__ zu schweigen mögen. Die Shell-Beschwerden, dass es keine 2 an diesem Ort erwartet (dasselbe Verhalten für andere Weiterleitungen).

Jeder kann hier helfen?

Antwort

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

in this case Umleitung und bedingte Ausführung Betreiber müssen mit caret entkommen sein.

Oder setzen alles in doppelte Anführungszeichen:

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

delayed expansion ist ebenfalls möglich:

@echo off 

setlocal enableDelayedExpansion 

set "command=__COMMAND__ 2>nul" 

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

Es funktioniert! Dies wird wahrscheinlich die umfassendste Antwort sein, die jemals für diese dumme Frage möglich war, also werde ich sie jetzt akzeptieren. Danke @npocmaka! – Campa