我注意到一些奇怪的行爲,重定向標準輸出到'名稱'中的特殊字符的文件。奇怪的標準輸出重定向行爲
的那些我發現:
echo.>f,test
產生一種叫f
文件,包含文本,test
。與.
,;
和<space>
相同(顯然,逗號更改爲任何字符)。
echo.>f.:test
產生稱爲F~000%HK
的零字節文件。輸出文件名中的第一個字符對應於重定向字符和.:
大寫字母之間的重定向'文件名'(我相信.
由於同樣的原因而被忽略/刪除,試圖創建名爲f....
的文件只是創建一個名爲f
的文件) 。我不知道剩下的意思是什麼,因爲在'文件名'後改變文本什麼都不會改變。即echo.>f.:nope
仍產生空文件F~000%HK
。
另一個同樣的事例; echo.>test.:test
產生稱爲TEST~4N5
的零字節文件。
在批處理中,後一個例子會產生空文件與奇怪名稱相同的結果,但前一個例子生成一個名爲f
的文件,其中包含一個空行。
任何解釋/'異常'添加?
第一個很簡單,逗號被視爲終止符,結束文件名。改用'echo。>「f,test」'代替。我無法將其他情況重現爲書面形式,但請注意,'file:test'是[備用數據流]的有效路徑名(http://msdn.microsoft.com/zh-cn/library/windows/desktop /aa364404%28v=vs.85%29.aspx)在名爲'file'的文件中命名爲'test'。 –
在我的系統上,第二種情況只是生成「系統找不到指定的路徑」。這是預期的,因爲我沒有F驅動器。 –
第三種情況對我來說按預期工作,即它產生一個名爲'test.'的空文件,並帶有一個備用數據流。你在什麼操作系統上? –