2011-08-24 4 views
5

Estoy iterando a través del resultado del comando en un ciclo for. Considere el siguiente código:Archivo por lotes: suprimir la salida de error de comando cuando se usa en un ciclo for

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

Básicamente estoy tratando de borrar el valor de cada variable de entorno cuyo nombre empieza con "__variable". Sin embargo, si no se establece dicha variable, aparece un error que dice "Variable de entorno __variable no definida", que no es algo que me gustaría que se muestre en mi consola. Así que, naturalmente, me gustaría cambiar mi código como este:

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

Pero ahora conseguir un nuevo error que dice "2> fue inesperado en este momento." o algo de ese efecto. Ahora estoy atascado; ¿Hay alguna manera de completar mi objetivo sin que aparezca el error estándar en la pantalla?

+0

favor, agregue una etiqueta de idioma – arnaud576875

Respuesta

10

Para Windows NT 4 y posteriores, que se necesitan para escapar de las tuberías y la redirección de símbolos, que se lleva a cabo mediante un prefijo con signos de intercalación():

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