Сравнение строк, а где Like?
Друзья, прошу прощения за сверхдебильный вопрос, впервый "пришлось" залезть в vbs, начал ковыряться, что-то там создавать... В общем вопрос - как мне правильно написать сравнение с подстановочными знаками?
Код:
for each file in folder.files
if file.name LIKE mask then wscript.echo file.name
next
Как правильно пользоваться, подскажите. Спасибо.
|
Попробуйте так
Код:
for each file in folder.files
if file.name = mask then wscript.echo file.name
next
|
Используйте регулярные выражения. Например:
Код:
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
|
pogo, пробовал уже ;)
Iska, работает, спасибо, сейчас внедримс.
|
Iska, подскажи, а как для регулярного выражения написать вот такую маску правильно - "^*^.txt"? Где все так и есть как написано, кроме *...
|
Цитата:
Цитата rudimko
вот такую маску правильно - "^*^.txt"? Где все так и есть как написано, кроме *... »
|
То есть, буквально «^» входят в имя файла? Попробуйте так (не проверялось):
Код:
With objRegExp
.Pattern = "^\^.*\^\.txt$"
.IgnoreCase = True
End With
|
Цитата:
Цитата Iska
То есть, буквально «^» входят в имя файла? Попробуйте так (не проверялось): »
|
угу, входят в название, к сожалению. Не сработало.
|
Создал файл «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
Получил:
Приведите примеры имён Ваших искомых файлов.
|
Код:
.Pattern = WshShell.ExpandEnvironmentStrings("%Computername%") & "^\^.*\^\.txt$"
Что-то я не так делаю походу... compname^блаблабла^.txt не прокатило
Или надо убрать ^ одну походу, ибо вхождение происходит раньше?
Код:
.Pattern = WshShell.ExpandEnvironmentStrings("%Computername%") & "\^.*\^\.txt$"
Вроде отрабатывает, но верный ли это вариант?
|
rudimko, я просил представить примеры имён файлов, а не Ваш код.
|
Цитата:
Цитата Iska
rudimko, я просил представить примеры имён файлов, а не Ваш код. »
|
ну я же написал - compname^блаблабла^.txt
|
Код:
With objRegExp
.Pattern = "^compname\^.*\^\.txt$"
.IgnoreCase = True
End With
|
Время: 13:48.
© OSzone.net 2001-