Показать полную графическую версию : [решено] Сравнение строк, а где 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"? Где все так и есть как написано, кроме *...
вот такую маску правильно - "^*^.txt"? Где все так и есть как написано, кроме *... »
То есть, буквально «^» входят в имя файла? Попробуйте так (не проверялось):
With objRegExp
.Pattern = "^\^.*\^\.txt$"
.IgnoreCase = True
End With
То есть, буквально «^» входят в имя файла? Попробуйте так (не проверялось): »
угу, входят в название, к сожалению. Не сработало.
Создал файл «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
Приведите примеры имён Ваших искомых файлов.
.Pattern = WshShell.ExpandEnvironmentStrings("%Computername%") & "^\^.*\^\.txt$"Что-то я не так делаю походу... compname^блаблабла^.txt не прокатило
Или надо убрать ^ одну походу, ибо вхождение происходит раньше?
.Pattern = WshShell.ExpandEnvironmentStrings("%Computername%") & "\^.*\^\.txt$"Вроде отрабатывает, но верный ли это вариант?
rudimko, я просил представить примеры имён файлов, а не Ваш код.
rudimko, я просил представить примеры имён файлов, а не Ваш код. »
ну я же написал - compname^блаблабла^.txt
With objRegExp
.Pattern = "^compname\^.*\^\.txt$"
.IgnoreCase = True
End With
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.