Замена лишних пробелов в имени директорий
Помогите пожалуйста написать скрипт для замены лишних пробелов в именах директорий, для примера в папке C:\Temp
Их может быть местами 2 и более между словами. Папок порядка 30000
|
Одного уровня или искать и во вложенных?
|
Код:
Get-ChildItem C:\Temp -Recurse -Directory | Where {$_.Name -match "\s{2,}"} | Rename-Item -NewName {$_.FullName -replace "\s{2,}"," "}
|
Kazun, Get-ChildItem сначала выберет всё, и только затем передаст объекты по конвейеру? Если так, то не случится ли так, что родительский каталог сменит имя, а дочерние не будут обработаны зараз?
Update: так и есть.
|
Скрипт удаляет все пробелы в наименованиях папок (спасибо замечанию Iska-я не до конца осознал проблему)
Код:
@Echo Off
Set "InDir=С:\Temp"
SetLocal EnableExtensions EnableDelayedExpansion
For /F "usebackq delims=" %%D In (`Dir "%InDir%" /B /S /A:D 2^>nul^|Sort /R`) Do (
Set "DirName=%%~nxD"
Ren "%%D" "!DirName: =!"
)
|
Логично, коллега!
Только с заменой Вы переборщили ;) — надо не убирать все пробелы, а вместо нескольких оставлять единственный.
|
Этот скрипт оставляет в наименованиях папок не более одного пробела. Каюсь за недостаточно внимательное отношение к условию задачи
Код:
@Echo Off
Set "InDir=С:\Temp"
SetLocal EnableExtensions EnableDelayedExpansion
For /F "usebackq delims=" %%D In (`Dir "%InDir%" /B /S /A:D 2^>nul^|Sort /R`) Do (
Set "DirName=%%~nxD"
Call :Replace
Ren "%%D" "!DirName!"
)
GoTo :Eof
:Replace
Set "iDirName=!DirName!"
Set "DirName=!DirName: = !"
If Not "!iDirName!"=="!DirName!" GoTo :Replace
GoTo :Eof
|
Время: 22:44.
© OSzone.net 2001-