PDA

Показать полную графическую версию : Удаление первых символов в названии файла


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


было: [раз два три]четыре пять
стало: четыре пять


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

Iska
26-08-2017, 20:39
На 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()» — помнится, не все Проводники «кушали» лидирующие пробелы. Чего не делается — проверки существования папки перед переименованием.

megaloman
26-08-2017, 22:19
@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
На всякий случай дополнительно удаляются лидирующие пробелы. Чего не делается — проверки существования папки с новым именем перед переименованием.

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

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

Iska
28-08-2017, 20:03
megaloman, спасибо, теперь понятно. Я просто не «копал» на тему вложенности.




© OSzone.net 2001-2012