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

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

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

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


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

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


Есть каталог, в котором много папок.
Папки названы в формате [любой набор символов]любой набор символов
Нужен скрипт, который удалит скобки вместе с их содержимым.

Код: Выделить весь код
было: [раз два три]четыре пять
стало: четыре пять
В названии папки может и вовсе не быть скобок, в этом случае ничего не делать с ним.

Отправлено: 20:21, 26-08-2017

 

Ветеран


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

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


На WSH:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFSO
Dim objFolder


strSourceFolder = "C:\Мои проекты\0111"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strSourceFolder) Then
	With WScript.CreateObject("VBScript.RegExp")
		.Pattern = "^\[.*\](.+)$"
		
		For Each objFolder In objFSO.GetFolder(strSourceFolder).SubFolders
			If .Test(objFolder.Name) Then
				objFolder.Name = Trim(.Execute(objFolder.Name).Item(0).Submatches.Item(0))
			End If
		Next
	End With
Else
	WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

На всякий случай дополнительно делается «Trim()» — помнится, не все Проводники «кушали» лидирующие пробелы. Чего не делается — проверки существования папки перед переименованием.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:39, 26-08-2017 | #2



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

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


Ветеран


Contributor


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

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


CMD. Работает и с вложенными папками
Код: Выделить весь код
@Echo Off

Set "FileIn=Z:\Box_In"

FOR /F "usebackq delims=" %%d IN (`Dir "%FileIn%\[*]*.*" /S /B /A:D 2^>nul^|Sort /R`) DO Call :DirIn "%%d%"
GoTo :Eof

:DirIn
	FOR /F "usebackq tokens=2 delims=]" %%i IN ('%~nx1') DO If Not "%%i"=="" (
		FOR /F "tokens=*" %%s IN ("%%i") DO Ren %1 "%%s"
	)
GoTo :Eof
На всякий случай дополнительно удаляются лидирующие пробелы. Чего не делается — проверки существования папки с новым именем перед переименованием.

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


Последний раз редактировалось megaloman, 28-08-2017 в 11:33. Причина: Подсмотрел у Iska идею маски файлов

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

Отправлено: 22:19, 26-08-2017 | #3


Ветеран


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

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


Цитата megaloman:
Подсмотрел у Iska идею маски файлов »
А я теперь подсмотрел у Вас и увидел, что можно-то было обойтись и без регулярок . Правда, не понял, зачем «sort /r».

Отправлено: 17:37, 28-08-2017 | #4


Ветеран


Contributor


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

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


Iska! Здесь пример дерева папок, когда нужен «sort /r». Без него не получится.

Код: Выделить весь код
Z:\Box_In\[1234 любой набор символов]  123 любой набор символов\[любой набор символов]  любой набор символов\Soft_In
Z:\Box_In\[любой набор символов]  любой набор символов\[1234 любой набор символов]  123 любой набор символов\[любой набор символов]  любой набор символов\Test
Переименовывать приходится начиная с папок наибольшей вложенности, иначе с путями будет проблема

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


Последний раз редактировалось megaloman, 28-08-2017 в 19:51.


Отправлено: 19:43, 28-08-2017 | #5


Ветеран


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

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


megaloman, спасибо, теперь понятно. Я просто не «копал» на тему вложенности.

Отправлено: 20:03, 28-08-2017 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - % в названии файла Molod4ik Скриптовые языки администрирования Windows 1 11-03-2016 08:49
CMD/BAT - [решено] Удаление через wmic программ с хитрыми символами в названии Elven Скриптовые языки администрирования Windows 1 02-03-2016 15:10
CMD/BAT - Определение файла с наибольшим числом в названии Weidmann Скриптовые языки администрирования Windows 5 04-01-2015 19:19
CMD/BAT - [решено] Удаление первых 9 символов в каждой строке TXT файла pzh2393 Скриптовые языки администрирования Windows 1 18-05-2012 16:53
CMD/BAT - [решено] Анализ на количество символов в названии файла/папки айкот Скриптовые языки администрирования Windows 8 04-10-2011 16:12




 
Переход