【发布时间】:2019-06-27 06:47:29
【问题描述】:
我有一个具有以下命名约定的文件目录:“### Bunch of random names.txt”,我想将文件重命名为相同的内容,但减去“###”。
应该足够简单:
Get-ChildItem -File | Rename-Item -newname { $_.Name.SubString(4,$_.Name.Length) }
但是我得到一个“索引和长度必须引用字符串中的位置。”
我通过以下方式验证 Name.Length:
Get-ChildItem -File | select Name, @{ N='name length';E={$_.Name.Length) } }
$_.Name.Length 为目录中的每个文件返回正确的 int 值
当我尝试这个时:
Get-ChildItem -File | select Name, @{N='name length';E={ $_.Name.SubString(4,$_.Name.Length) } }
“名称长度”列为空
为什么 substring 不像 $_.Name.Length?我在这里错过了什么?
【问题讨论】:
-
既然你知道前缀,我还是会这样做:$TestPath | Get-ChildItem - 文件 |重命名项目 -NewName { ($_.Name).Replace('#### ','') }
-
对不起,我应该指定的,### 可以是任何 3 位数字。
标签: powershell