尝试使用PowerShell删除一个奇怪的字符,但它在 [
上不断破坏:
文件名是 test [t].txt
Dir | Rename-Item -NewName { $_.Name -replace "[","_" }
结果是:
PS D:\test> Dir | Rename-Item -NewName { $_.Name -replace "[","_" }
Rename-Item : The input to the script block for parameter 'NewName' failed.
Invalid regular expression pattern: [.
At line:1 char:27
+ Dir | Rename-Item -NewName <<<< { $_.Name -replace "[","_" }
+ CategoryInfo : InvalidArgument: (test [t].txt:PSObject) [Rename-Item], ParameterBindingException
+ FullyQualifiedErrorId : ScriptBlockArgumentInvocationFailed,Microsoft.PowerShell.Commands.RenameItemCommand
我已经尝试了一些常用的方法来逃避角色 \[
,_ '['
,...和nada .
思想和想法?
PS:使用 \[
转义尝试 Replace()
方法:
PS D:\test> Dir | Rename-Item -NewName{ $_.Name.Replace("\[","_")}
Rename-Item : Cannot rename because item at 'Microsoft.PowerShell.Core\
FileSystem::D:\test\test [t].txt' does not exist.
At line:1 char:18
+ Dir | Rename-Item <<<< -NewName{ $_.Name.Replace("\[","_")}
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
PPS:文件存在:
PS D:\test> dir
Directory: D:\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 1/27/2018 4:08 PM 448 rb.bat
-a--- 1/27/2018 3:04 PM 4 test [t].txt
当PS在文件名中看到 [
时,PS标头附加到路径中是一个问题 . 如果我用 (
(paren)替换 [
(括号),一切都按预期工作 .
2 回答
是的,我看到你用蛮力解决了你的处境 . 此代码似乎生成您想要的文件名 .
逃脱的特征是反斜杠 . 所以你的正则表达式应该是这样的:
这将取代开口方括号和关闭方括号 .