【问题标题】:Changing file extension case in Powershell在 Powershell 中更改文件扩展名大小写
【发布时间】:2016-09-12 17:30:14
【问题描述】:

我们有用户发送的加密的 .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\Submit\20160506_205400_Sender_header.TXT with itself.

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

【问题讨论】:

  • 您可以将扩展名更改为其他内容 (tmp),然后再改回 txt。 *编辑:这对我有用:dir *.txt | % {ren $_.fullname ($_.name.substring(0, $_.name.length - 3) + 'txt')}

标签: windows powershell file-extension renaming


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢弗罗德的回答。我已经试过了。它不会改变扩展名的大小写。这就是为什么我不得不求助于 Copy-Item。
  • 对我来说很好用。你还记得重命名后在文件资源管理器中按 F5 吗?请注意,Get-Childitem -Filter "test.TXT" | Select-Object -Expand Name 出于某种原因将始终显示 TXT。在重命名 Get-ChildItem -Filter "Test*" | Select-Object -Expand Name 后进行验证时尝试使用通配符(或不使用过滤器)。
  • 啊——知道了。有效。没有意识到我必须刷新它。非常感谢先生!
猜你喜欢
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 2018-10-28
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多