在 Powershell 中更改文件扩展名大小写

Changing file extension case in Powershell

我们有用户发送的经过加密的 .txt 文件。我们解密它们并将其作为输入发送到下游的第 3 方系统。它一直运行良好,但用户开始发送文件是 .TXT 而不是 .txt。它在解密过程中没有任何区别,但会影响下游系统。我们应该将 .TXT 更改为 .txt

我试过这样改

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\Submit160506_205400_Sender_header.TXT with itself.

好像.TXT和.txt之间没有区别。有没有办法或解决方法?

Windows 在涉及文件路径时不区分大小写,因此具有相同目标和源的复制操作将失败,因为您正在读取您试图替换的文件。

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

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