2013-11-10 49 views
0

與Windows' cmd.exe的,當你運行像Windows命令處理器:輸出重定向機制

output.exe > 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

基於掀起了一絲Process Monitor,當echo text > filename.txt是跑了,就會調用CreateFile取得與dwCreationDisposition標誌設置爲CREATE_ALWAYS,其中

創建一個新的文件,始終。

如果指定的文件存在並且可寫,則該函數將覆蓋 文件,函數成功,和最後的錯誤代碼被設置爲 ERROR_ALREADY_EXISTS(183)。

如果指定的文件不存在並且是有效路徑,則會創建一個新文件 ,函數成功並且最後一個錯誤代碼被設置爲零。

echo demo2 >> filename.txt,在otherhand,來電CreateFileCREATE_NEW並打開現有的文件。該過程然後獲取文件的結尾,從結尾讀取一個字節,然後開始寫入。我猜想它是在末尾尋找一個^Z字符,它在讀取最後一個字符時需要覆蓋它,但這只是一個猜測。

0

輸出追加到現有文件:

>>out.txt output.exe 
相關問題