Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сравнение строк, а где Like?

Ответить
Настройки темы
VBS/WSH/JS - [решено] Сравнение строк, а где Like?

Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


Друзья, прошу прощения за сверхдебильный вопрос, впервый "пришлось" залезть в vbs, начал ковыряться, что-то там создавать... В общем вопрос - как мне правильно написать сравнение с подстановочными знаками?
Код: Выделить весь код
for each file in folder.files
if file.name LIKE mask then wscript.echo file.name
next
Как правильно пользоваться, подскажите. Спасибо.

Отправлено: 16:30, 15-08-2014

 

Старожил


Сообщения: 208
Благодарности: 5

Профиль | Отправить PM | Цитировать


Попробуйте так
Код: Выделить весь код
for each file in folder.files
if file.name = mask then wscript.echo file.name
next

Отправлено: 17:52, 15-08-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Используйте регулярные выражения. Например:
Код: Выделить весь код
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
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:14, 15-08-2014 | #3


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

Отправлено: 21:21, 15-08-2014 | #4


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:29, 08-09-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата rudimko:
вот такую маску правильно - "^*^.txt"? Где все так и есть как написано, кроме *... »
То есть, буквально «^» входят в имя файла? Попробуйте так (не проверялось):
Код: Выделить весь код
With objRegExp
	.Pattern = "^\^.*\^\.txt$"
	.IgnoreCase = True
End With
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:36, 08-09-2014 | #6


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:40, 08-09-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Создал файл «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
Приведите примеры имён Ваших искомых файлов.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:52, 08-09-2014 | #8


Пользователь


Сообщения: 126
Благодарности: 3

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось rudimko, 08-09-2014 в 11:15.


Отправлено: 11:07, 08-09-2014 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:17, 08-09-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сравнение строк, а где Like?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Сравнение строк в php dimona55 Вебмастеру 3 20-01-2014 20:21
CMD/BAT - [решено] Сравнение строк с переменной и добавление в случае отсутствия zion87 Скриптовые языки администрирования Windows 2 04-01-2013 15:08
Где можно посмотреть сравнение Cor 2 Duo vs Xeon? Очень надо! Mihanoid Процесcоры 11 29-11-2006 09:55
сравнение двух массивов строк в Си bool Программирование и базы данных 5 04-05-2005 17:04
Сравнение строк в PHP Dutchman Mihel Вебмастеру 8 06-07-2004 13:04




 
Переход