2016-05-16 90 views
1

我們有加密的用戶發送的.txt文件。我們解密它們並將其發送到下游的第三方系統作爲輸入。它一直運行良好,但用戶開始發送文件是.TXT而不是.txt。它在解密過程中沒有任何區別,但它影響着下游系統。我們應該改變.TXT爲.txt更改Powershell中的文件擴展名大小寫

我試圖改變這種方式

Copy-Item -Path $myOfile –Destination ([io.path]::ChangeExtension($myOfile, '.txt')) -Verbose 

這裏$ myOfile是我的文件的名稱和它名字類似,我們解密此 20160506_205400_Sender_header.TXT.GPG和它的變化來20160506_205400_Sender_header.TXT

我使用上述命令將其改爲20160506_205400_Sender_header.txt和它拋出下面的錯誤

Copy-Item : Cannot overwrite the item C:\Sender\Submit\20160506_205400_Sender_header.TXT with itself. 

看起來好像.TXT和.txt之間沒有區別。有沒有辦法做到這一點或解決方法?

+0

您可以將擴展名更改爲其他內容(tmp),然後返回到txt。 *編輯:這對我有用:'dir * .txt | %{ren $ _。fullname($ _。name.substring(0,$ _。name.length - 3)+'txt')}' –

回答

2

當它到達文件路徑時,Windows不區分大小寫,所以具有相同目標和源的複製操作將失敗,因爲您正在讀取要替換的文件。

使用Rename-Item重命名文件。例如:

Rename-Item -Path $myOfile -NewName ([io.path]::ChangeExtension($myOfile, '.txt')) -Verbose 
+0

非常感謝Frode的回答。我已經嘗試過了。它不改變擴展的情況。這就是爲什麼我不得不求助於複製項目。 –

+0

它對我來說工作正常..你記得重命名後在文件資源管理器中打F5嗎?注意'Get-Childitem -Filter'test.TXT「|出於某種原因,選擇對象擴展名稱將始終顯示TXT。在重命名Get-ChildItem -Filter「Test *」後驗證後,試着用通配符(或者沒有過濾器)選擇對象擴展名稱「。 –

+0

Ahh - 明白了。有效。沒意識到我不得不刷新它。非常感謝先生! –