在Windows 7中,当从互联网上下载文件时,某些浏览器(例如IE和Firefox)会将其标记为来自互联网。这在文件的属性对话框中很明显,它会在属性窗口的底部显示一条消息和一个“取消阻止”按钮。
此属性作为备用流存储在NTFS文件系统上 - 特别是名为“Zone.Identifier”的流。因此,在被阻止的文件上,您可以运行命令more < file.exe:Zone.Identifier
并获得输出:
[ZoneTransfer]
ZoneId=3
您可以使用命令echo. > file.exe:Zone.Identifier
清除此数据。这只是一个空白行覆盖上面的数据,虽然Zone.Identifier
流仍然存在于文件中,但文件不再被“阻止”,如属性对话框所确认的那样。
FAT32文件系统显然没有NTFS备用流;所以,命令echo. > file.exe:Zone.Identifier
给出输出:
The filename, directory name, or volume label syntax is incorrect.
这是输出到stdout,因此在末尾添加2&gt; NUL不会抑制它。将1> NUL添加到末尾DOES会抑制它,但是它也会阻止命令执行任何有用的操作;也就是说,如果您运行echo. > file.exe:Zone.Identifier 1>NUL
,则Zone.Identifier
流仍然存在。
如何在NTFS上成功运行命令echo. > file.exe:Zone.Identifier
,并在FAT32上抑制其错误输出?
答案 0 :(得分:4)
命令echo. > file.exe:Zone.Identifier 1>NUL
导致echo.
重定向到NUL,忽略第一个重定向。
添加2>NUL
会导致echo的stderr重定向到NUL。您尝试避免的消息将通过失败的重定向打印到stderr,而不是由echo
命令单独打印。
解决方案是使用括号将命令分为两个阶段:
(echo. > file.exe:Zone.Identifier) 2>NUL
这将导致首先执行echo.
,并将其输出重定向到备用文件流。如果尝试写入FAT文件系统上的替代文件流,那么它输出到stderr将被重定向到NUL。