我正在尝试将根文件夹结构中的 - 字符更改为 _ 字符。
情况是这样的。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 '-','_' }