通过删除括号中的字符来重命名文件夹

时间:2019-04-19 13:15:41

标签: windows powershell batch-file cmd

在一个目录中,我有多个子目录,但其中一些子目录中有方括号,其中有些字符。例子

c:/folder/[Hello]folder1
c:/folder/fol[Hi]der2
c:/folder/[World]  Folder3

我想要的输出如下

c:/folder/folder1
c:/folder/folder2
c:/folder/Folder3

我尝试了以下操作,但无法修复。

for /d %%i in (*.*) do for /f "delims=][" %%j in ("%%~i") do if "%%~i" neq "%%~j" echo ren "%%~i" "%%~j"

@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR %%D IN ("*[*]*") do (
  SET name=%%~nxD
  echo "%%D"
)

1 个答案:

答案 0 :(得分:2)

您可以将PowerShell的Rename-Item cmdlet与-replace regex运算符配合使用:

Get-ChildItem C:\folder |Rename-Item -NewName {$_.Name -replace '\s*\[[^\[\]]+\]\s*'}

这将删除方括号对及其内容以及周围的空白。

您可以在执行以下操作之前添加-WhatIf开关以验证结果名称:

Get-ChildItem C:\folder |Rename-Item -NewName {$_.Name -replace '\s*\[[^\[\]]+\]\s*'} -WhatIf