Переименовать папку, удалив символы в скобках - PullRequest
0 голосов
/ 19 апреля 2019

В каталоге у меня есть несколько подкаталогов, но некоторые из них имеют квадратную скобку и некоторые символы в ней.пример

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 Ответ

2 голосов
/ 19 апреля 2019

Вы можете использовать командлет PowerShell Rename-Item с оператором регулярных выражений -replace, чтобы сделать это:

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

Это удалит пары скобок и их содержимое, а также все пустые пространства вокруг них.

Вы можете добавить переключатель -WhatIf, чтобы проверить полученные имена перед выполнением:

Get-ChildItem C:\folder |Rename-Item -NewName {$_.Name -replace '\s*\[[^\[\]]+\]\s*'} -WhatIf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...