使用windows'cmd.exe,运行
之类的命令output.exe > out.txt
现有的非空文件'out.txt'实际发生了什么?
创建新的'out.txt',而旧的'out.txt'以'rm out.txt'方式删除?
我认为它并没有字面上写过旧的'out.txt',因为这似乎很危险。
P.S。 可以使用cmd.exe命令专门写入旧文件的数据吗?
即。
>type out.txt
This is a sentence.
>strangeEchoes That > out.text
>type out.txt
That is a sentence.
P.P.S
随时欢迎提供信息,越多越好越好=)
P.P.P.S。
很抱歉,如果我不善于寻找答案/提问。
答案 0 :(得分:0)
基于Process Monitor跟踪,当echo text > filename.txt
运行时,调用CreateFile
并将dwCreationDisposition
标记设置为CREATE_ALWAYS
,其中< / p>
另一方面,始终创建新文件。
如果指定的文件存在且可写,则该函数将被覆盖 文件,函数成功,最后错误代码设置为 ERROR_ALREADY_EXISTS(183)。
如果指定的文件不存在且是有效路径,则为新文件 创建,函数成功,最后一个错误代码设置为 零。
echo demo2 >> filename.txt
使用CreateFile
调用CREATE_NEW
并打开现有文件。然后,该进程获取文件的结尾,从结尾读取一个字节,然后开始写入。我猜它正在寻找一个^Z
字符,它在读取最后一个字符时需要覆盖,但这只是一个猜测。
答案 1 :(得分:0)
将输出附加到现有文件:
>>out.txt output.exe