Cmd Windows命令处理器:输出重定向机制

Cmd Windows命令处理器:输出重定向机制,cmd,overwrite,io-redirection,Cmd,Overwrite,Io Redirection,使用windows的cmd.exe,当您运行以下命令时 output.exe > out.txt 对于现有的非空文件“out.txt”,实际会发生什么 是否创建了一个新的“out.txt”,而以“rm out.txt”方式删除了旧的“out.txt”? 我认为它并没有完全覆盖旧的'out.txt',因为这看起来可能很危险 另外,您是否可以使用cmd.exe命令专门写入旧文件的数据 i、 e p.p.S 信息总是受欢迎的,越是冗长越好=) p.p.p.S 很抱歉,如果我不擅长搜索答案/提问

使用windows的cmd.exe,当您运行以下命令时

output.exe > out.txt
对于现有的非空文件“out.txt”,实际会发生什么

是否创建了一个新的“out.txt”,而以“rm out.txt”方式删除了旧的“out.txt”?
我认为它并没有完全覆盖旧的'out.txt',因为这看起来可能很危险

另外,您是否可以使用cmd.exe命令专门写入旧文件的数据

i、 e

p.p.S

信息总是受欢迎的,越是冗长越好=)

p.p.p.S

很抱歉,如果我不擅长搜索答案/提问。

基于跟踪,当运行
echo text>filename.txt
时,会调用
CreateFile
,并将
dwCreationDisposition
标志设置为
CREATE\u ALWAYS
,这将

始终创建一个新文件

如果指定的文件存在且可写,则函数将覆盖该文件 文件,函数成功,最后一个错误代码设置为 错误已经存在(183)

如果指定的文件不存在并且是有效路径,则会创建一个新文件 创建时,函数成功,最后一个错误代码设置为 零


另一方面,echo demo2>>filename.txt使用
CREATE\u NEW
调用
CreateFile
,并打开现有文件。然后进程获取文件的结尾,从结尾读取一个字节,然后开始写入。我猜它正在查找结尾处的
^Z
字符,在读取最后一个字符时需要覆盖该字符,但这只是猜测。

将输出附加到现有文件:

>>out.txt output.exe
>>out.txt output.exe