2011-08-24 10 views
5

Przejmuję dane wyjściowe polecenia w pętli for. Rozważmy następujący kod:Plik wsadowy: pomiń dane wyjściowe błędu polecenia, gdy jest używany w pętli for.

for /F "tokens=1 delims=?=" %%A in ('set __variable') do (set %%A=) 

Zasadniczo próbuję usunąć wartość każdej zmiennej środowiskowej, którego nazwa zaczyna się od „__variable”. Jeśli jednak nie ustawiono takiej zmiennej, pojawia się komunikat "Nie zdefiniowano zmiennej środowiskowej __variable defined", co nie jest czymś, co chciałbym wyświetlić na mojej konsoli. Tak więc naturalnie zmieniłabym swój kod:

for /F "tokens=1 delims=?=" %%A in ('set __variable 2> NUL') do (set %%A=) 

Ale teraz dostaję nowy błąd, który mówi "2> było nieoczekiwane w tym czasie". lub coś podobnego. Teraz utknąłem; czy jest jakiś sposób, aby ukończyć mój cel, nie pokazując na ekranie standardowego błędu?

+0

należy dodać tag językowy – arnaud576875

Odpowiedz

10

Dla Windows NT 4, a później trzeba będzie uciec symbole rury i przekierowania, które jest wykonywane przez poprzedzenie ich CARETS():

for /F "tokens=1 delims=?=" %A in ('set __variable 2^>NUL') do (set %A=) 
Powiązane problemy