包含[和/或]的Remove-Item或Rename-Item

问题描述

问题,搜索大量目录/文件以清除10年以上的文件。某些文件夹和文件的名称中带有[]。 即

C:\Temp\Test_Old_Folder\Test [TEST]\Test [TEST].txt
C:\Temp\Test_Old_Folder\Test [TEST]\Test - Copy.txt

我有一个脚本,该脚本将检查上次访问日期,如果访问日期已超过10年,它将删除文件。当前,我们正在使用卷影副本,因此,如果用户在未来两年内需要它,则可以返回并查找文件。

foreach ($File in $FileList) {
    Remove-Item -Path $File.FilePath -Force
}

我试图将包含[]的文件/文件夹重命名为其他名称,但是,这也不起作用。我可以手动删除文件/文件夹,但是,如果在整个文件服务器上分布的多个文件夹中有数百个文件/文件夹,这是浪费工时。有没有办法注释掉[]。我知道有些语言可以使用一个`来使以下字符作为字符串读取,而不是操作或任何您想调用的字符。

任何帮助将不胜感激。

解决方法

至少在PowerShell中的路径解析上下文中,字符串[abc]被解释为通配符模式。它与正则表达式“这些字符中的任何一个”的含义相同。

因此,如果您进行Get-Item -Path 'file[test].txt'Get-Item尝试将其解析为名为filet.txtfilee.txtfiles.txt的任何文件。

使用-LiteralPath参数与提供程序cmdlet一起抑制路径中的通配符扩展:

Remove-Item -LiteralPath $File.FilePath -Force

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...