更改文件夹名称中仅存在该字符的字符

更改文件夹名称中仅存在该字符的字符

我正在尝试将根文件夹结构中的 - 字符更改为 _ 字符。

情况是这样的。e:\folder\bpo-v3\ext\ext\file.name e:\folder\testopject\ext\ext\file.name

我使用代码

$RootPath = "e:\folder\"
Get-ChildItem -Path $RootPath -Directory -Recurse -Depth 0 | Rename-Item -NewName { $_.Name -replace '-','_'}

此代码运行正常,但我在所有没有 - 字符的文件夹中都收到错误。我应该在解码过程中注意什么才能避免这种情况?

答案1

您只需测试名称以查看其是否包含“-”字符。使用哪里对象(别名:哪里或?):

$RootPath = "e:\folder\"
Get-ChildItem -Path $RootPath -Directory -Recurse -Depth 0 |
    Where-Object Name -match '-' |
Rename-Item -NewName { $_.Name -replace '-','_' }

...-Recurse -Depth 0...相当于没有递归,所以你的代码简化为:

$RootPath = "e:\folder\"
Get-ChildItem -Path $RootPath -Directory |
    Where-Object Name -match '-' |
Rename-Item -NewName { $_.Name -replace '-','_' }

如果您在控制台上以交互方式工作,则可以使用别名并利用位置参数来缩短:

$RootPath = "e:\folder\"
gci $RootPath -ad | ? Name -match '-' | ren -NewName { $_.Name -replace '-','_' }

相关内容