Показать полную графическую версию : Удаление первых символов в названии файла
Есть каталог, в котором много папок.
Папки названы в формате [любой набор символов]любой набор символов
Нужен скрипт, который удалит скобки вместе с их содержимым.
было: [раз два три]четыре пять
стало: четыре пять
В названии папки может и вовсе не быть скобок, в этом случае ничего не делать с ним.
На 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 идею маски файлов »
А я теперь подсмотрел у Вас и увидел, что можно-то было обойтись и без регулярок :). Правда, не понял, зачем «sort /r».
megaloman
28-08-2017, 19:43
Z:\Box_In\[1234 любой набор символов] 123 любой набор символов\[любой набор символов] любой набор символов\Soft_In
Z:\Box_In\[любой набор символов] любой набор символов\[1234 любой набор символов] 123 любой набор символов\[любой набор символов] любой набор символов\Test
Переименовывать приходится начиная с папок наибольшей вложенности, иначе с путями будет проблема
megaloman, спасибо, теперь понятно. Я просто не «копал» на тему вложенности.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.