我在for循环中迭代命令输出。请考虑以下代码:
for /F "tokens=1 delims=?=" %%A in ('set __variable') do ( set %%A= )
基本上我试图清除名称以“__variable”开头的每个环境变量的值。但是,如果没有设置这样的变量,我会收到一条错误,上面写着“环境变量__variable not defined”,这不是我想在控制台上显示的内容。很自然地,我会改变我的代码:
for /F "tokens=1 delims=?=" %%A in ('set __variable 2> NUL') do ( set %%A= )
但现在我收到一条新错误,说“2>此时出乎意料。”或者那种效果。现在我被困住了;有没有办法让我完成我的目标而不会在屏幕上显示标准错误?
答案 0 :(得分:12)
对于Windows NT 4及更高版本,您需要转义管道和重定向符号,这是通过在它们前面加上carets()来完成的:
for /F "tokens=1 delims=?=" %A in ('set __variable 2^>NUL') do ( set %A= )