【发布时间】:2019-01-17 12:29:27
【问题描述】:
我有一个文件夹,其子文件夹名称类似于:
The.Train.To.Morning.Town
我想用空格替换所有.。
我试过用这个
$dir = "k:\test"
CD $dir
Get-ChildItem -Recurse |
Where-Object {$_.Name -match '.'} |
Rename-Item -NewName { $_.Name -replace '.',' '}
然后我得到一个错误,我哪里出错了?谢谢
Rename-Item :路径不是合法形式。在 line:5 char:1 + Rename-Item -NewName { $_.Name -replace '.',' '}
【问题讨论】:
-
如果我没记错的话,
-replaceoperator 与点“。”的正则表达式一起使用。代表任何字符。如果您正在寻找文字点,则必须使用反斜杠-replace '\.',' '对其进行转义 -
谢谢你,但也重命名了“。”对于文件夹中的文件扩展名,例如The.Train.To.Morning.Town 文件夹包含一个 AVI The.Train.To.Morning.Town.avi 。无论如何要排除扩展名?
-
Rename-Item -NewName {$_.BaseName.replace('.',' ')+$_.Extension} -
除了来自@Olaf 的代码 - 如果您不想重命名文件,还可以使用 Directory 参数:
Get-ChildItem -Recurse -Directory -Recurse
标签: powershell