0

使用 windows 的 cmd.exe,当您运行类似的命令时

output.exe > out.txt

使用现有的非空文件“out.txt”实际会发生什么?

是否在以“rm out.txt”方式删除旧的时创建了新的“out.txt”?
我认为它并没有真正覆盖旧的“out.txt”,因为这似乎很危险。

PS您可以使用cmd.exe命令专门覆盖旧文件的数据吗?

IE

>type out.txt
This is a sentence.  
>strangeEchoes That > out.text
>type out.txt
That is a sentence.

聚苯乙烯

信息总是受欢迎的,越多越啰嗦=)

购买力平价

抱歉,如果我不擅长寻找答案/提问。

4

2 回答 2

0

基于Process Monitor跟踪,当echo text > filename.txt运行时,调用CreateFiledwCreationDisposition标志设置为CREATE_ALWAYS

总是创建一个新文件。

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

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

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

于 2013-11-10T03:28:47.050 回答
0

将输出附加到现有文件:

>>out.txt output.exe
于 2013-11-10T21:34:21.240 回答