这波是玄学,没有找到相关文档,都是自己试出来的。。。

文件路径

首先,我们新建一个文件:

> New-Item '['

非常成功并没有报错,然后我们用 ls 查看一下文件:

> ls '['
Get-ChildItem : 无法检索 cmdlet 的动态参数。指定的通配符模式无效: [
所在位置 行:1 字符: 1
+ ls '['
+ ~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ChildItem],ParameterBindingException
    + FullyQualifiedErrorId : GetDynamicParametersException,Microsoft.PowerShell.Commands.GetChildItemCommand

天哪,这是什么?试试按 TAB 键补全:

> ls '.\`['
ls : 找不到路径“C:\Users\MoeShin\test\`[”,因为该路径不存在。
所在位置 行:1 字符: 1
+ ls '.\`['
+ ~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\MoeShin\test\`[:String) [Get-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

这啊,又是什么?

后来,我试啊试啊,发现前面加两个反引号才行:

> ls '``['

    目录: C:\WDNMD

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         1202/23/66     66:66              0 [

所以,我们 ForEach-Object 遍历文件夹的时候就要处理一下,比如这样替换:

ls | ForEach-Object {
    ls ($_.name  -replace '(\[|\])', '``$1')
}

Remove-ItemProperty

这是我在搞注册表时发现的问题,-Name 只需要一个反引号就行

支付宝红包

支付宝

微信

标签: powershell

添加新评论

注意:已开启评论过滤器,无中文无法评论!
泡泡表情