powershell - 包含 [ 和/或 ] 的删除项目或重命名项目
问题描述
问题,搜索大量目录/文件以清理超过 10 年的文件。某些文件夹和文件的名称中有 [ ]。IE
C:\Temp\Test_Old_Folder\Test [TEST]\Test [TEST].txt
C:\Temp\Test_Old_Folder\Test [TEST]\Test - Copy.txt
我有一个脚本可以检查最后访问日期,如果访问日期超过 10 年,它将删除文件。目前我们正在使用卷影副本,因此如果用户在未来 2 年内需要它,他们可以返回并找到文件。
foreach ($File in $FileList) {
Remove-Item -Path $File.FilePath -Force
}
我试图将包含 [ ] 的文件/文件夹重命名为其他名称,但是这也不起作用。我可以手动删除文件/文件夹,但是,如果在文件服务器上分布的多个文件夹中有数百个文件/文件夹,这是浪费工时。有没有办法注释掉[]。我知道在某些语言中,您可以使用单个 ` 将以下字符读取为字符串,而不是操作或任何您想调用的字符。
任何帮助将不胜感激。
解决方案
[abc]
至少在 PowerShell 中的路径解析上下文中,字符串被解释为通配符模式。它与正则表达式中的含义相同,“这些字符中的任何一个”。
因此,如果您这样做Get-Item -Path 'file[test].txt'
,请Get-Item
尝试将其解析为任何名为filet.txt
、filee.txt
或files.txt
.
使用-LiteralPath
提供程序 cmdlet 的参数来抑制路径中的通配符扩展:
Remove-Item -LiteralPath $File.FilePath -Force
推荐阅读
- azure - Start-AzAutomationRunbook 不断失败,并显示“Start-AzureRmAutomationRunbook:找不到与参数名称“等待”匹配的参数。”
- reactjs - 使用 immer 将 Redux 状态数组替换/更改为其他数组
- pandas - 尝试使用分类变量运行逻辑回归模型,但无法从对象更改 dtype
- clojure - 无头运行时如何跟踪 Clojure Leiningen REPL?
- visual-studio - Web 服务器在发送大图像时返回 500
- javascript - 我可以在 javascript 中组合画布和图像元素吗?
- javascript - 命令:node-gyp rebuild 退出代码:1
- javascript - 如何在javascript中从具有相同ID但不同列名的不同表中获取数据
- prolog - 在序言中比较 2 个名字和他们的年龄
- python - 在 Python 中的大型文本(推文)数据集中绘制特定单词随时间的出现情况