2011-08-24 12 views
5

Sto iterando attraverso l'output del comando in un ciclo for. Si consideri il seguente codice:File batch: sopprimere l'output dell'errore di comando quando utilizzato in un ciclo for

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

Fondamentalmente sto cercando di cancellare il valore di ogni variabile d'ambiente il cui nome inizia con "__variable". Tuttavia, se non viene impostata alcuna variabile di questo tipo, viene visualizzato un errore che dice "Variabile d'ambiente __variabile non definita", che non è qualcosa che vorrei venga visualizzato sulla mia console. Così, naturalmente, vorrei cambiare il mio codice come questo:

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

Ma ora ottenere un nuovo errore che dice "2> è stato inaspettato in questo momento." o qualcosa del genere. Ora sono bloccato; c'è un modo per me per completare il mio obiettivo senza che l'errore standard venga visualizzato sullo schermo?

+0

si prega di aggiungere un tag di lingua – arnaud576875

risposta

10

Per Windows NT 4 e versioni successive, avrete bisogno di sfuggire il tubo e reindirizzamento simboli, che è fatto da anteponendo omissione():

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