Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сравнение строк, а где Like? (http://forum.oszone.net/showthread.php?t=286548)

rudimko 15-08-2014 16:30 2389783

Сравнение строк, а где Like?
 
Друзья, прошу прощения за сверхдебильный вопрос, впервый "пришлось" залезть в vbs, начал ковыряться, что-то там создавать... В общем вопрос - как мне правильно написать сравнение с подстановочными знаками?
Код:

for each file in folder.files
if file.name LIKE mask then wscript.echo file.name
next

Как правильно пользоваться, подскажите. Спасибо.

pogo 15-08-2014 17:52 2389826

Попробуйте так
Код:

for each file in folder.files
if file.name = mask then wscript.echo file.name
next


Iska 15-08-2014 18:14 2389838

Используйте регулярные выражения. Например:
Код:

Option Explicit

Dim objFSO
Dim objFile

Dim objRegExp


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objRegExp = WScript.CreateObject("VBScript.RegExp")

With objRegExp
        .Pattern = "^ras.*a.*\.dll$"
        .IgnoreCase = True
End With

For Each objFile In objFSO.GetFolder("C:\Windows\System32").Files
        If objRegExp.Test(objFile.Name) Then
                WScript.Echo objFile.Name
        End If
Next

Set objRegExp = Nothing
Set objFSO    = Nothing

WScript.Quit 0


rudimko 15-08-2014 21:21 2389917

pogo, пробовал уже ;)
Iska, работает, спасибо, сейчас внедримс.

rudimko 08-09-2014 09:29 2399883

Iska, подскажи, а как для регулярного выражения написать вот такую маску правильно - "^*^.txt"? Где все так и есть как написано, кроме *...

Iska 08-09-2014 09:36 2399885

Цитата:

Цитата rudimko
вот такую маску правильно - "^*^.txt"? Где все так и есть как написано, кроме *... »

То есть, буквально «^» входят в имя файла? Попробуйте так (не проверялось):
Код:

With objRegExp
        .Pattern = "^\^.*\^\.txt$"
        .IgnoreCase = True
End With


rudimko 08-09-2014 09:40 2399888

Цитата:

Цитата Iska
То есть, буквально «^» входят в имя файла? Попробуйте так (не проверялось): »

угу, входят в название, к сожалению. Не сработало.

Iska 08-09-2014 10:52 2399913

Создал файл «C:\Песочница\054\^0001^.txt». Запустил код:
Код:

Option Explicit

Dim objFSO
Dim objFile

Dim objRegExp


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objRegExp = WScript.CreateObject("VBScript.RegExp")

With objRegExp
        .Pattern = "^\^.*\^\.txt$"
        .IgnoreCase = True
End With

For Each objFile In objFSO.GetFolder("C:\Песочница\054").Files
        If objRegExp.Test(objFile.Name) Then
                WScript.Echo objFile.Name
        End If
Next

Set objRegExp = Nothing
Set objFSO    = Nothing

WScript.Quit 0

Получил:
Цитата:

Код:

^0001^.txt

Приведите примеры имён Ваших искомых файлов.

rudimko 08-09-2014 11:07 2399916

Код:

.Pattern = WshShell.ExpandEnvironmentStrings("%Computername%") & "^\^.*\^\.txt$"
Что-то я не так делаю походу... compname^блаблабла^.txt не прокатило
Или надо убрать ^ одну походу, ибо вхождение происходит раньше?
Код:

.Pattern = WshShell.ExpandEnvironmentStrings("%Computername%") & "\^.*\^\.txt$"
Вроде отрабатывает, но верный ли это вариант?

Iska 08-09-2014 11:17 2399925

rudimko, я просил представить примеры имён файлов, а не Ваш код.

rudimko 08-09-2014 11:20 2399930

Цитата:

Цитата Iska
rudimko, я просил представить примеры имён файлов, а не Ваш код. »

ну я же написал - compname^блаблабла^.txt

Iska 08-09-2014 11:24 2399933

Код:

With objRegExp
        .Pattern = "^compname\^.*\^\.txt$"
        .IgnoreCase = True
End With


rudimko 08-09-2014 11:34 2399941

Цитата:

Цитата Iska
Iska »

спасибо.


Время: 13:48.

Время: 13:48.
© OSzone.net 2001-