例子:
set /p= 0>nul
runas /user:"" "" >nul 2>&1 0>con
comp nul nul 0>nul
执行命令就像按下了enter一样.当使用输入重定向但不输出时,我宁愿期待这样的事情.
最佳答案 让我们按照
MS documentacion.
我们处理重复
2>&1 : Take the handle in the stream 1,
duplicate it
and place the copy as the handle in stream 2.
和重定向运算符
2>file : Get a handle to the file and
place the handle to be used as stream 2
<file : Get a handle to the file and
place the handle to be used as stream 1 (implicit)
在所有情况下,获取(复制或不复制)句柄并将其放置为指示流的句柄.
现在你的代码
set /p= 0>nul
^^^^^ .... What does it mean?
这意味着:打开一个流到nul“device”,并设置此流的句柄(复制/复制它)作为流0的句柄
所以,这两行是等价的(或多或少,见编辑)
set /p= <nul
set /p= 0>nul
在这两种情况下,存储在& 0中的句柄指向nul设备.
编辑以适应评论并完成答案.
Not then why
set /p= 0<con
andset /p= 0>con
give different results?
也就是说,第一个从控制台读取,第二个从控制台读取.如果如前所述,在两种情况下,流& 0包含同一设备的句柄,这种行为的原因是什么?
处理未平仓期权.与& 0相关联的设备是相同的,但我们得到的手柄不是这种情况.至少如此说文件:
> >>生成一个只写句柄
所以,
>在第一种情况下,可以从手柄读取,因为控制台可以被重新加工,手柄允许读取
>在第二种情况下,控制台可以被重新加入,但是不能从句柄读取,因为它是一个写句柄