none
Обработка русского RRS feed

  • Вопрос

  • Привествую.
    Не могу понят как в vbs обработать русский выводимый командами из командной строки в файл. Можно конечно батником разобрать, но это явно неудобно, хочу не терять целостность vbs


    29 марта 2008 г. 9:47

Ответы

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

     

    1. Раз вы открываете текстовый файл из скрипта, то вы можете вставить в скрипт функцию смены кодировки. Посмотрите это обсуждение:

     

    http://forums.microsoft.com/technet-ru/ShowPost.aspx?PostID=1658697&SiteID=40

     

    2. Метод fso.OpenTextFile имеет необязательный параметр format, которым можно воспользоваться для открытия файла в требуемой кодировке. Подробнее см.

     

    http://msdn2.microsoft.com/en-us/library/314cz14s.aspx

     

    3. Вы не хотите писать bat-ник, но вы все равно вызываете rasdial.exe и перенаправляете вывод в текстовый файл. Тогда вы можете воспользоваться конструкцией типа

     

    rasdial.exe ... | find /c "..." > log.txt

     

    Тогда в файле будет 0, если заданная подстрока не найдена, и число, большее нуля в ином случае. Кроме того, find поддерживает пременную среды errorlevel. Для более сложного анализа вывода (посредством регулярных выражений) можно воспользоваться утилитой findstr. И все эти конструкции будут располагаться в одной строке, bat-файл писать не потребуется.

     

    29 марта 2008 г. 20:50
    Модератор

Все ответы

  •  

    Не вполне понятно, что требуется сделать. Вы запускаете консольную команду из скрипта, и не можете разобрать вывод из-за кодировки? Или проблема какая-то другая?
    29 марта 2008 г. 17:07
    Модератор
  • Батником было-бы легко разобрать ("на лету" - без создания временного файла и его перекодировки) любой вывод в файл.  Даже  таких  утилит, которые не реагируют на chcp 1251.
    29 марта 2008 г. 17:48
  •  osr. написано:

     

    Не вполне понятно, что требуется сделать. Вы запускаете консольную команду из скрипта, и не можете разобрать вывод из-за кодировки? Или проблема какая-то другая?

    Абстрактный пример:
    Вызываю rasdial и вывожу его ответ в файл (Связь с .. установлена). Дальше хочу обработать символы из файла. Тк вывод был по-русски, то vbs  не понимает кодировку.

     01MDM написано:
    Батником было-бы легко разобрать ("на лету" - без создания временного файла и его перекодировки) любой вывод в файл.  Даже  таких  утилит, которые не реагируют на chcp 1251.

    Батником я могу разобрать в этом не проблема, мне нужно вбс-ом.
    29 марта 2008 г. 18:14
  • Предложу несколько вариантов, не все из них проверял сам, а вы выберите подходящий.

     

    1. Раз вы открываете текстовый файл из скрипта, то вы можете вставить в скрипт функцию смены кодировки. Посмотрите это обсуждение:

     

    http://forums.microsoft.com/technet-ru/ShowPost.aspx?PostID=1658697&SiteID=40

     

    2. Метод fso.OpenTextFile имеет необязательный параметр format, которым можно воспользоваться для открытия файла в требуемой кодировке. Подробнее см.

     

    http://msdn2.microsoft.com/en-us/library/314cz14s.aspx

     

    3. Вы не хотите писать bat-ник, но вы все равно вызываете rasdial.exe и перенаправляете вывод в текстовый файл. Тогда вы можете воспользоваться конструкцией типа

     

    rasdial.exe ... | find /c "..." > log.txt

     

    Тогда в файле будет 0, если заданная подстрока не найдена, и число, большее нуля в ином случае. Кроме того, find поддерживает пременную среды errorlevel. Для более сложного анализа вывода (посредством регулярных выражений) можно воспользоваться утилитой findstr. И все эти конструкции будут располагаться в одной строке, bat-файл писать не потребуется.

     

    29 марта 2008 г. 20:50
    Модератор
  • Большое спасибо, первые 2 вполне подойдут

    3 вариант плох тем, что искомую строку нужно писать в дос кодировке, а хотелось бы работать "по-русски".
    Еще раз спасибо.

    PS по ссылке данной Вами, я понял, что Вы работали в трасте, случаем не банк Траст?
    30 марта 2008 г. 8:28
  • Да, именно в этом банке я проработал много лет и до сих пор нередко приезжаю в гости к коллегам по работе. Однако не буду развивать эту тему дальше, т.к. она выходит за рамки нашего технического Форума.

     

    30 марта 2008 г. 11:28
    Модератор