【问题标题】:Remove-Item with "." in filenames doesn't work使用“。”删除项目在文件名中不起作用
【发布时间】:2015-04-29 02:20:16
【问题描述】:

我的 Powershell 脚本检查文件是否存在。如果存在,则删除现有文件。然后保存一个同名的新文件。 当我的文件名(和路径)中没有点(“。”)时,它可以完美运行。我认为 -LiteralPath 将是解决方案,但它不起作用,不知道为什么。 Test-Path 似乎有效,但 Remove-Item 无效。

 $xlsFile = "R:\Temp\37 Place i.Bay.\ComeOn 37 Place i.Bay. user_finance.xlsx"

 if (Test-Path -LiteralPath $xlsFile)
        {
            try {
                Write-Host "TestPath positiv, try to delete"
                Remove-Item -LiteralPath $xlsFile -ErrorAction "Stop"
            } catch {
                Write-Warning $_.Exception.Message
            }

            try {
                $xlsObj.ActiveWorkbook.SaveAs($xlsFile);
            } catch {
                Write-Warning $_.Exception.Message
            }

        }
        else
        {
            Write-Host "TestPath negativ"
            $xlsObj.ActiveWorkbook.SaveAs($xlsFile);
        };

Powershell 2.0, R: 是网络路径。

谢谢

【问题讨论】:

  • 我还没有找到支持它的文档(我可能没有时间),但我怀疑问题是试图让文件夹名称以最后一个字符为点。
  • Windows GUI 不允许您创建带有尾随句点的文件夹,因此您可能会遇到一些问题
  • 找到了。 “不要以空格或句点结束文件或目录名称。虽然底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。但是,可以将句点指定为第一个字符名称。例如,“.temp”。 - msdn.microsoft.com/en-us/library/aa365247.aspx

标签: powershell filenames


【解决方案1】:

windows 中不允许以点结尾的文件夹名称:

不要以空格或句点结尾的文件或目录名称。尽管底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。但是,可以将句点指定为名称的第一个字符。例如,“.temp”。

https://msdn.microsoft.com/en-us/library/aa365247.aspx

【讨论】:

  • 这个答案可以帮助删除带有尾随句点的对象。还链接到有关此主题的 M$ 文章。 stackoverflow.com/a/4123152/3829407
  • 我想我应该更清楚。我认为问题出在名为“37 Place i.Bay.”的路径中的文件夹。不是文件名本身。
  • 对不起.. 那是我的错,我只是同意你的观点,并就如何可能使其Remove-Item 工作提供解决方案。因为无法模拟问题,所以无法测试
  • 是的,我也无法重新创建场景。我怀疑您可以使用 linux VM 首先创建文件夹,但我现在不能花时间想出一个。
  • 我正在从 SQL 请求创建文件夹和文件名。更新数据的时候一直出现这个问题。现在我使用 $myFoldername.TrimEnd(".") 来确保它不再发生。
猜你喜欢
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
相关资源
最近更新 更多