Переменная включена в набор - PullRequest
0 голосов
/ 18 октября 2010

Есть способ с помощью команды IF включить переменную в набор значений?

Что я имею в виду:

IF %% i in (abc 123 opl) первый набор эхо

IF %% i in (xyz 456 bnm) второй набор эхо

Ответы [ 3 ]

0 голосов
/ 18 октября 2010

из командной строки:

C:\Users\preet>set val=99
C:\Users\preet>for %f in (100 99 21) do @if (%f)==(%val%) echo found it %f
found it 99

В пакетном файле

set val=99
for %%f in (100 99 21) do @if (%%f)==(%val%) echo found it %%f
0 голосов
/ 18 октября 2010

И вы также не ограничены только пакетной обработкой на компьютере с Windows.Существует также VBScript (и PowerShell).Вот как вы можете проверить, используя vbscript

strVar = WScript.Arguments(0)
Set dictfirst = CreateObject("Scripting.Dictionary")
Set dictsecond = CreateObject("Scripting.Dictionary")
dictfirst.Add "abc",1
dictfirst.Add "123",1
dictfirst.Add "opl",1
dictsecond.Add "xyz",1
dictsecond.Add "456",1
dictsecond.Add "bnm",1
If dictfirst.Exists(strVar) Then
    WScript.Echo strVar & " exists in first set"
ElseIf dictsecond.Exists(strVar) Then
    WScript.Echo strVar & " exists in second set"
Else
    WScript.Echo strVar & " doesn't exists in either sets"  
End If 

использование:

C:\test>cscript //nologo test.vbs abc
abc exists in first set

C:\test>cscript //nologo test.vbs xyz
xyz exists in second set

C:\test>cscript //nologo test.vbs peter
peter doesn't exists in either sets
0 голосов
/ 18 октября 2010

Вы можете использовать оператор for, сделайте это.Вот скрипт, который позволяет запустить его с чем-то вроде:

myprog 456

и он выдаст in set 2:

@setlocal enableextensions enabledelayedexpansion
@echo off
for %%a in (abc 123 opl) do (
    if "x%%a"=="x%1" echo in set 1
)
for %%a in (xyz 456 bnm) do (
    if "x%%a"=="x%1" echo in set 2
)
@endlocal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...