Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Замена лишних пробелов в имени директорий

Ответить
Настройки темы
Любой язык - Замена лишних пробелов в имени директорий

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите пожалуйста написать скрипт для замены лишних пробелов в именах директорий, для примера в папке C:\Temp
Их может быть местами 2 и более между словами. Папок порядка 30000

Отправлено: 16:12, 18-10-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Одного уровня или искать и во вложенных?

Отправлено: 16:59, 18-10-2016 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Get-ChildItem C:\Temp -Recurse -Directory | Where {$_.Name -match "\s{2,}"} | Rename-Item -NewName {$_.FullName -replace "\s{2,}"," "}

Отправлено: 17:01, 18-10-2016 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Kazun, Get-ChildItem сначала выберет всё, и только затем передаст объекты по конвейеру? Если так, то не случится ли так, что родительский каталог сменит имя, а дочерние не будут обработаны зараз?

Update: так и есть.

Отправлено: 17:19, 18-10-2016 | #4


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Скрипт удаляет все пробелы в наименованиях папок (спасибо замечанию 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: =!" 
)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-10-2016 в 21:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:10, 18-10-2016 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата megaloman:
|Sort /R »
Логично, коллега!

Только с заменой Вы переборщили — надо не убирать все пробелы, а вместо нескольких оставлять единственный.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:06, 18-10-2016 | #6


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Этот скрипт оставляет в наименованиях папок не более одного пробела. Каюсь за недостаточно внимательное отношение к условию задачи
Код: Выделить весь код
@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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-10-2016 в 22:02.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:53, 18-10-2016 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Замена лишних пробелов в имени директорий

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Замена в имени файлов кириллицы на латиницу VedunO Скриптовые языки администрирования Windows 19 20-01-2019 00:40
CMD/BAT - Замена пробелов на %20 в текстовом файле Strato Скриптовые языки администрирования Windows 4 11-03-2014 13:16
Перенос текста без пробелов xNiSSaNx Вебмастеру 1 02-05-2013 00:21
VBA - Удаление лишних пробелов Word NoBrain Программирование и базы данных 1 13-08-2012 22:12
[решено] Удаление пробелов AzazeLHAck AutoIt 3 03-05-2010 01:49




 
Переход