regexp. не закрытые скобки
помогите пожалуйста
нужен regexp для поиска в тотал командере файлов которые имеют такой вид
пример
слово1_-_слово2-(50505050)-слово4-слово5)-слово6
слово1_-_слово2-(50505050)-слово4-(слово5-слово6
но не
слово1_-_слово2-(50505050)-слово4-(слово5)-слово6
тоесть может содержать
пробЫвал так но оно находит все три примера вышие
(\)(.){1,}[^\(](.){1,}[^\(]\))
|
Цитата:
Цитата neprotiv
(\)(.){1,}[^\(](.){1,}[^\(]\)) »
|
Точнее укажите, что именно Вам нужно получить. Ибо, судя по лишним скобкам, вам нужно не только найти, но и извлечь части имени (для дальнейшей работы?).
|
мне нужно найти неправильные имена файлов, тоесть если файл содержит лишнюю скобу - либо ( либо )
нашел примерный выход таким образом
(\)+[^\(]+[^\(]\)|\(+[^\)]+[^\)]\()
но оно ненаходит если файл выглядит так (лишняя скобка стоит очень близко с другой)
слово1_-_слово2-(50505050)-(слово4-слово5-слово6
|
neprotiv, если нужно просто найти файлы с потерянной скобкой — regexp не обязателен, достаточно просто посчитать количество открывающих и закрывающих скобок, затем сравнить эти количества.
Пример на WSH:
Код:
Option Explicit
Dim strFolder
Dim objFile
'strFolder = WScript.Arguments.Item(0)
strFolder = "E:\Песочница\0197"
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strFolder) Then
For Each objFile In .GetFolder(strFolder).Files
If UBound(Split(objFile.Name, "(")) <> UBound(Split(objFile.Name, ")")) Then
WScript.Echo objFile.Name
End If
Next
Else
WScript.Echo "Folder [" & strFolder & "] not found"
End If
End With
WScript.Quit 0
↧ Возможный результат ↧
Код:
слово1_-_слово2-(50505050)-слово4-(слово5-слово6.txt
слово1_-_слово2-(50505050)-слово4-слово5)-слово6.txt
Цитата:
Цитата neprotiv
если файл содержит лишнюю скобу - либо ( либо ( »
|
«либо ( либо (» — оригинально ;). Очевидно, имелось в виду «Либо «(», либо «)»»?
|
большое спасибо
Цитата:
Цитата Iska
«либо ( либо (» — оригинально . Очевидно, имелось в виду «Либо «(», либо «)»»? »
|
да))...опечатка
|
neprotiv, это именно то, что было потребно Вам?
|
да то только вот никак не пойму как прикрутить к тотал командеру и вообще как он работает (скрипт)
|
Цитата:
Цитата neprotiv
да то только вот никак не пойму как прикрутить к тотал командеру »
|
Это зависит от того, что Вы хотели бы получить в нём.
Цитата:
Цитата neprotiv
и вообще как он работает (скрипт) »
|
Для указанной папки:
Код:
strFolder = "E:\Песочница\0197"
скрипт перебирает все файлы. Имя каждого файла, представляющее собой строку символов, разбивается в массив, сначала по символу открывающей скобки, затем — закрывающей. Для каждого из двух полученных массивов получается значение верхней границы. Если полученные значения не равны — значит количество отрывающих и закрывающих скобок не одинаково.
Код:
If UBound(Split(objFile.Name, "(")) <> UBound(Split(objFile.Name, ")")) Then
|
мне надо чтоб он создал список файлов с полным путем
можно ли использовать его как кнопку?
|
1. В каком виде Вам нужен список файлов? В виде текстового файла? В виде сообщения?
2. Каких именно файлов? Из выделенных на панели?
|
список неправильных файлов в текстовом документе
|
Цитата:
Цитата neprotiv
список неправильных файлов в текстовом документе »
|
Куда, в какую папку, класть текстовый документ? Для чего вообще нужен текстовый документ — т.е., какова будет дальнейшая работа с найденными именами файлов с потерянными скобками?
Почему не ответили на второй вопрос — выделенных на панели файлов, всех файлов, або ещё каких?
P.S. Вот Вам пример — для выделенных на панели файлов:
читать дальше »
Код:
Option Explicit
Dim objArgument
Dim objFile
Dim strMessage
If WScript.Arguments.Count <> 0 Then
strMessage = ""
For Each objArgument In WScript.Arguments
With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(objArgument) Then
With .GetFile(objArgument)
If UBound(Split(.Name, "(")) <> UBound(Split(.Name, ")")) Then
strMessage = strMessage & .Path & vbCrLf
End If
End With
End If
End With
Next
If Len(strMessage) <> 0 Then
WScript.Echo strMessage
End If
End If
WScript.Quit 0
Настройки для кнопки:
|
Время: 16:02.
© OSzone.net 2001-