批处理文件:在for循环中使用时,抑制命令错误输出

Dan*_*Dan 5 batch-file

我在for循环中迭代命令输出.请考虑以下代码:

for /F "tokens=1 delims=?=" %%A in ('set __variable') do ( set %%A= )
Run Code Online (Sandbox Code Playgroud)

基本上我试图清除名称以"__variable"开头的每个环境变量的值.但是,如果没有这样的变量设置,我得到的,说:"没有定义的环境变量__variable",这是不是东西,我想我的控制台上显示错误.很自然地,我会改变我的代码:

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

但现在我收到一个新错误,说"2>此时出乎意料." 或者那种效果.现在我被困住了; 有没有办法让我完成我的目标,而不会在屏幕上显示标准错误?

And*_*aev 12

对于Windows NT 4及更高版本,您将需要转义管道和重定向符号,这通过在它们前面加上carets()来完成:

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