1 (изменено: DarkJoker1992, 2014-10-02 13:00:16)

Тема: VBS: Найти цифры между 2-мя символами

Даже толком не знаю как описать проблему. . .
В общем есть txt в нём есть запись выглядит примерно так =14521M,
Мне нужно что бы VBS определяла когда между = и M нет цифр, и сделать дальше goto ну или else.

2

Re: VBS: Найти цифры между 2-мя символами

В общем есть txt

Упакуйте образец txt в архив и выложите на RGhost.

Ответьте на вопрос: что и как именно мы ищем между «=» и «M»? Не должно быть только цифр? Не должно быть ни одной цифры? Например, «=aaaa14aaaa5aa21aaaM» — это «есть цифры» или «нет цифр»?!

Мне нужно что бы VBS определяла когда между = и M нет цифр,

Общий принцип — регулярные выражения.

3

Re: VBS: Найти цифры между 2-мя символами

Нужно что бы vbs определяла когда в файле  txt с таким содержимым, (*****.=12415M) есть между = и М цыфры , или там ничего нет. Т.Е. если в файле (*****.=M) мне нужно что бы она выполнила goto или else.

4

Re: VBS: Найти цифры между 2-мя символами

DarkJoker1992
Регулярка:

(?<=\=)(.*)(?=M)

Добавьте параметр IgnoreCase и радуйтесь жизни.

5 (изменено: DarkJoker1992, 2014-10-02 14:36:13)

Re: VBS: Найти цифры между 2-мя символами

-_- добавить? эт как?
objRegExp.IgnoreCase = True
правельно?

greg zakharov пишет:

DarkJoker1992
Регулярка:

(?<=\=)(.*)(?=M)

Добавьте параметр IgnoreCase и радуйтесь жизни.

6

Re: VBS: Найти цифры между 2-мя символами

Вот так:

Option Explicit

Dim objRegExp
Dim strSample


Set objRegExp = WScript.CreateObject("VBScript.RegExp")

objRegExp.Pattern = "=M"

'1st sample
strSample = "(*****.=12415M)"

If objRegExp.Test(strSample) Then
    WScript.Echo "Nothing found between [=] and [M] in [" & strSample & "]."
Else
    WScript.Echo "Somthing found between [=] and [M] or not found [=] and [M] in [" & strSample & "]."
End If

'2nd sample
strSample = "(*****.=M)"

If objRegExp.Test(strSample) Then
    WScript.Echo "Nothing found between [=] and [M] in [" & strSample & "]."
Else
    WScript.Echo "Somthing found between [=] and [M] or not found [=] and [M] in [" & strSample & "]."
End If

Set objRegExp = Nothing

WScript.Quit 0

-_- добавить? эт как?

Где образец файла?

7 (изменено: DarkJoker1992, 2014-10-02 14:49:08)

Re: VBS: Найти цифры между 2-мя символами

Ну так в файле всего 2 записи, вот эта  номер.=числоM
и ещё одна оч важная личная информация.
Спасибо за код, сегодня испробую и напишу что да как вышло.

8

Re: VBS: Найти цифры между 2-мя символами

эммм -_- простите, а где указать файл для обработки? + вы поставили числа strSample = "(*****.=12415M)" но имеется ввиду что числа между = и М каждый раз разные могут быть.

9

Re: VBS: Найти цифры между 2-мя символами

эммм -_- простите, а где указать файл для обработки?

Пока нигде. Вы ведь не выложили образец файла.

+ вы поставили числа strSample = "(*****.=12415M)" но имеется ввиду что числа между = и М каждый раз разные могут быть.

Проставьте в примере разные Ваши числа вместо «12415» в «strSample = "(*****.=12415M)"» и проверьте. Вы путаете шаблон («.Pattern») и примеры строк в «strSample». Поскольку Вы не выложили файл — откуда мне знать, что там может или не может быть в реальности?!

10 (изменено: alexii, 2014-10-02 16:09:04)

Re: VBS: Найти цифры между 2-мя символами

Вот прошу ссылка http://rghost.ru/private/58314573/9c215 … 1f2a327e2a

11

Re: VBS: Найти цифры между 2-мя символами

Избегайте излишнего цитирования. Я поправил Ваш пост.

Вот прошу ссылка http://rghost.ru/private/58314573/9c215 … 1f2a327e2a

Option Explicit

Dim strSourceFile

Dim objFSO
Dim strContent


strSourceFile = "E:\Песочница\0399\тест.txt"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
    With objFSO.OpenTextFile(strSourceFile)
        strContent = .ReadAll()
        .Close
    End With
    
    With WScript.CreateObject("VBScript.RegExp")
        .Pattern = "=M"
        
        If .Test(strContent) Then
            WScript.Echo "Nothing found between [=] and [M] in [" & strContent & "]."
        Else
            WScript.Echo "Somthing found between [=] and [M] or not found [=] and [M] in [" & strContent & "]."
        End If
    End With
Else
    WScript.Echo "Can't find source file [" & strSourceFile & "]."
    WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

12

Re: VBS: Найти цифры между 2-мя символами

Спасибо,думаю это то что мне нужно.

13

Re: VBS: Найти цифры между 2-мя символами

Еще раз... все гораздо проще.

(function() {
  var str1 = '****.=125M',
      str2 = '*********.=M',
      reg  = /(?!\**\=)\d+(?!=m)/i,
      res1 = reg.exec(str1),
      res2 = reg.exec(str2);
  WScript.echo("res1: " + res1 + "; res2: " + res2);
}());

В случае с res1 получим число, с res2 - null. Моя идея в том, чтобы "забирать" число между знаков, а если такого нет, то возвращать null.

14

Re: VBS: Найти цифры между 2-мя символами

Ребят подскажите чё я не так сделал, пришлось чуток код переделать для удобности использования.

Option Explicit

Dim strSourceFile
Dim strContent

Dim WshShell,objFSO

   Set WshShell = CreateObject("WScript.Shell")
   set WshShell = WScript.CreateObject("WScript.Shell")
   otchet = .ExpandEnvironmentStrings("%programfiles%")
   
strSourceFile = (otchet & "\1C\log.txt")

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
    With objFSO.OpenTextFile(strSourceFile)
        strContent = .ReadAll()
        .Close
    End With
    
    With WScript.CreateObject("VBScript.RegExp")
        .Pattern = "=M"
        
        If .Test(strContent) Then
                WScript.Echo "Найдена ошибка"
                WshShell.Run (otchet & "\1С\Запуск.bat"), ,true
        Else
          WScript.Echo "Отчёт успешно сформирован"
                   WScript.Quit 1
        End If
    End With
Else

End If

Set objFSO = Nothing

WScript.Quit 0

15 (изменено: greg zakharov, 2014-10-02 19:51:20)

Re: VBS: Найти цифры между 2-мя символами

(function() {
  with (new ActiveXObject('WScript.Shell')) {
    var top = ExpandEnvironmentStrings('%programfiles%\\1C\\'),
        log = top + 'log.txt',
        bat = top + 'bat.bat',
        str, raw;
    
    with (new ActiveXObject('Scripting.FileSystemObject')) {
      if (!FileExists(log)) {
        WScript.echo("Error: file does not exists.");
        WScript.Quit(1);
      }
      
      str = OpenTextFile(log);
      raw = str.ReadAll();
      str.Close();
    }
    
    if (/(?!\**\=)\d+(?!=m)/i.exec(raw) !== null) {
      //WScript.echo("Если есть цифра");
      Run(bat);
    }
    else {
      WScript.echo("Если нет цифр");
    }
  }
}());

Уж это, надеюсь, сможете додумать?! Если нет, боюсь, что Вам поможет только самостоятельное изучение WSH.

16 (изменено: DarkJoker1992, 2014-10-02 20:22:03)

Re: VBS: Найти цифры между 2-мя символами

Ну скопировал ваш код в папку, поменял название из Запуск.bat в bat.bat как у вас, запустил и вылезла вот такая ошибка http://gyazo.com/9d8f863f0ed268ac8b3a2b09bff29813

17

Re: VBS: Найти цифры между 2-мя символами

OFFTOP:

greg zakharov,

+ открыть спойлер

http://risovach.ru/upload/2014/02/mem/frai-v-panike_42912625_orig_.jpeg

P.S Представил себе ситуацию, если бы так поступали программисты, создающие ПО для управления атомными реакторами.
А потом работники АС в этом ПО тыкали бы все кнопки подряд - авось сработает. Я конечно тоже многое делаю методом проб и ошибок, но всё-таки для получения базовых знаний [ПМСМ], лучше почитать литературу.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

18

Re: VBS: Найти цифры между 2-мя символами

Xameleon
https://vk.com/images/stickers/104/128.png
Простите, Вы о чем?

19

Re: VBS: Найти цифры между 2-мя символами

greg zakharov

greg zakharov пишет:

Уж это, надеюсь, сможете додумать?! Если нет, боюсь, что Вам поможет только самостоятельное изучение WSH.

В довесок к Вашим словам. http://vk.com/images/stickers/103/128.png

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

20

Re: VBS: Найти цифры между 2-мя символами

greg zakharov, это у нас обычное дело — «я уже придумал решение, теперь сделайте мне его», т.е. решаем не задачу, а решение, сложившееся в голове у автора .

21

Re: VBS: Найти цифры между 2-мя символами

Xameleon, alexii
Понятно.