在一个目录中,我有多个子目录,但其中一些子目录中有方括号,其中有些字符。例子
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"
)
答案 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