【发布时间】:2018-01-27 22:17:15
【问题描述】:
尝试使用 PowerShell 删除一个奇怪的字符,但它一直在 [ 上中断:
文件名是test [t].txt
Dir | Rename-Item -NewName { $_.Name -replace "[","_" }
结果:
PS D:\test> 目录 |重命名项目 -NewName { $_.Name -replace "[","_" } 重命名项目:参数“NewName”的脚本块输入失败。 无效的正则表达式模式:[. 在行:1 字符:27 + 目录 |重命名项目 -NewName我尝试了一些常用方法来转义字符 \[、'['、... 和 nada。
想法和想法?
PS:尝试Replace() 方法和\[ 转义:
PPS:该文件确实存在:
PS D:\test> 目录 目录:D:\test 模式 LastWriteTime 长度 名称 ---- ------------- ------ ---- -a--- 2018 年 1 月 27 日下午 4:08 448 rb.bat -a--- 1/27/2018 3:04 PM 4 测试 [t].txt当它在文件名中看到[ 时,PS 内部的某些东西将 PS 标头附加到路径是问题所在。如果我用((括号)替换[(括号),一切都会按预期工作。
【问题讨论】:
-
-replace使用正则表达式。摆脱你的支架:'\[' -
此外,如果您不需要,我会避免使用正则表达式。备选:
$_.Name.Replace('[','_') -
仍然挂在表达式中的 [ - 或者如果它通过了,则无法找到原始文件;
-
PS D:\test> 目录 |重命名项目 -NewName{ $_.Name.Replace('[','')} 重命名项目:无法重命名,因为项目位于 'Microsoft.PowerShell.Core\FileSystem::D:\test\test [ t].txt' 不存在。在 line:1 char:18 + Dir | Rename-Item .Name.Replace('[','_')} + CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException + FullyQualifiedErrorId : InvalidOperation,Microsoft .PowerShell.Commands.RenameItemCommand PS D:\test>
-
BECAUSE D:\test\test [t].txt DOES NOT EXIST.阅读您的错误消息。
标签: powershell text replace