我有一个文件夹结构,并且在所有文件夹中都有一部分位于 ( ) 之间。
像“文件夹示例(12345)”
现在我必须用 ( ) 之间的名称重命名所有文件夹。
所以结果是文件夹“12345”
我有一个开始,然后我被卡住了。
# Root path
$RootPath = "E:\Test\"
# Rename folders
Get-ChildItem -Path $RootPath -Filter '*()*' -Directory -Depth 0 | Rename-Item -NewName
此命令将重命名
folder example(12345)
为12345
:重命名命令的作用:
正则表达式可以进一步解释:
捕获的组可以通过引用它来重用
$1
。一个示范:
根据 Saaru Lindestøkke 的回答,我可以确认脚本应该可以正常工作。
这是对我有用的代码:
我以你为例,改变了
至
否则它什么也找不到,因为它会查找 Wildcard()Wildcard,我还将 $RootPath 更改为“C:\TEMP”(它在 TEMP 之后有和没有 \ 都适用)并且只运行 Get-ChildItem 的一部分来查看结果。它总能找到我创建的文件夹。
我也删除了“-Directory -Depth 0”,因为我不知道是否需要它,但它应该工作的越少越好。