Вопрос по VBScript в AE

  • Автор темы Автор темы Spirit412
  • Дата начала Дата начала

Spirit412

Топикстартер
15 лет на форуме
Сообщения
874
Реакции
133
Есть некий VBS.
Что бы хоть както тебажить, вывожу значения переменных в консоль (т.е. в шатле, если посмотреть детали тикета Run script, можно увидеть выведенную информацию)
Вопрос в кодировке.
Код:
WScript.Echo "Входящий файл: inputs() : " & inputs(0)
Упорно выводит: ‚室пйЁ© д ©«: inputs() : \\server-esko\AE_BASE\TEMP-Shuttle-IN\142708\SPUSK_v03.xls
 
В настройках винды есть выбор кодировки по-умолчанию для неюникодовских программ, поставьте 1251. Возможно поможет.
lan.PNG
 
Последнее редактирование:
  • Спасибо
Реакции: Chiga
Как это сделать?
121375
 
Есть некий VBS.
Что бы хоть както тебажить, вывожу значения переменных в консоль (т.е. в шатле, если посмотреть детали тикета Run script, можно увидеть выведенную информацию)
Вопрос в кодировке.
Код:
WScript.Echo "Входящий файл: inputs() : " & inputs(0)
Упорно выводит: ‚室пйЁ© д ©«: inputs() : \\server-esko\AE_BASE\TEMP-Shuttle-IN\142708\SPUSK_v03.xls

Просто

Код:
Function Main(inputs, outputFolder, params)
    For Each input in inputs
    WScript.Echo(Recode(input, "cp866", "windows-1251"))
    Next
    
    Main = "OK"
        
End Function


Function Recode(StrText, SrcCode, DestCode)
    With CreateObject("ADODB.Stream")
        .Type = 2
        .Mode = 3
        .Charset = DestCode
        .Open
        .WriteText (strText)
        .Position = 0
        .Charset = SrcCode
        Recode = .ReadText
        .Close
    end with
End Function
 
Нет, не получается.
В консоле ответ:
Код:
The script's standard output stream:
‘ҐаўҐа бжҐ аЁҐў Windows (Microsoft R) ўҐабЁп 5.8
Copyright (C) Љ®аЇ®а жЁп Њ ©Єа®б®дв 1996-2006, ўбҐ Їа ў  § йЁйҐл.

The script's error output stream:
C:\Windows\TEMP\test.vbs(57, 1) ЋиЁЎЄ  Є®¬ЇЁ«пжЁЁ Microsoft VBScript: ЌҐ¤®ЇгбвЁ¬л©  § Є
 
Нет, не получается.
В консоле ответ:
Код:
The script's standard output stream:
‘ҐаўҐа бжҐ аЁҐў Windows (Microsoft R) ўҐабЁп 5.8
Copyright (C) Љ®аЇ®а жЁп Њ ©Єа®б®дв 1996-2006, ўбҐ Їа ў  § йЁйҐл.

The script's error output stream:
C:\Windows\TEMP\test.vbs(57, 1) ЋиЁЎЄ  Є®¬ЇЁ«пжЁЁ Microsoft VBScript: ЌҐ¤®ЇгбвЁ¬л©  § Є

Ну так ты сначала просишь, чтобы тебе переменная возваращала правильный текст, а после системуню ошибку.

Тогда тебе сюда:
121418
 
А с batch всё намного проще, в начале скрипта нужно указать chcp 1251
 
Ну так ты сначала просишь, чтобы тебе переменная возваращала правильный текст, а после системуню ошибку.

Я твой код пихнул в vbs. Ошибку выдало.
Или как-то неправильно использую. По идее, есть функция которая меняет кодировку. И форич с выдачей результата в консоль. функция Recode меняет кодировку у переменной input. Так?
Т.е. вместо инпута могу и просто текст использовать. Этот текст функция Recode должна конвертнуть, а WScript.Echo выдать результат в консоль.
WScript.Echo(Recode("Просто текст", "cp866", "windows-1251"))
Всё верно?

А с batch всё намного проще, в начале скрипта нужно указать chcp 1251
Я изначально рассматривал - на чём скрипты писать для обработки xls, разнообразного парсинга, доступа к MySQL (можно и нодами в AE через SQL запросы, но мне после VBA удобнее в VBS) т.п.? Что выбрать для этого?
Вот этот ответ меня убедил использовать vbs
.bat - пакетный файл (Batch File), состоящий из инструкций командной строки - пакетный язык, пригодный для процедурного программирования, считается устаревшим. При запуске интерпретируется приложением cmd.exe.
.vbs - файл сценария (Visual Basic Script), помимо функционала .bat предоставляет возможности объектного программирования, работы с объектами OLE-автоматизации, создание классов, широкий набор функций и многое другое. При запуске интерпретируется компонентом Windows Script Host (wscript.exe или cscript.exe).
 
Последнее редактирование:
Я твой код пихнул в vbs. Ошибку выдало.
Или как-то неправильно использую. По идее, есть функция которая меняет кодировку. И форич с выдачей результата в консоль. функция Recode меняет кодировку у переменной input. Так?
Т.е. вместо инпута могу и просто текст использовать. Этот текст функция Recode должна конвертнуть, а WScript.Echo выдать результат в консоль.
WScript.Echo(Recode("Просто текст", "cp866", "windows-1251"))
Всё верно?


Я изначально рассматривал - на чём скрипты писать для обработки xls, разнообразного парсинга, доступа к MySQL (можно и нодами в AE через SQL запросы, но мне после VBA удобнее в VBS) т.п.? Что выбрать для этого?
Вот этот ответ меня убедил использовать vbs

Всё верно, функция Recode меняет кодировку и после возвращает

Код:
Function Main(inputs, outputFolder, params)
    For Each input in inputs
    WScript.Echo(Recode("Просто текст", "cp866", "windows-1251"))
    Next
    
    Main = "OK"
        
End Function

121470


Ты можешь так указать и текст и переменную.
И что за извращение писать запросы к mysql через vbs? Подкинь ему jdbc драйвер и живи счастливой жизнью.
 
  • Спасибо
Реакции: Spirit412
jdbc драйвер стоит. Через ноду в АЕ доступ к MySQL есть.
Но у меня сразу одним файлом и запрос данных из БД, и замена (если нужно) "." на "," (или обратно)... плюс всякие If...else и т.п.
Я пока не настолько SQL знаю, что бы всё это на нём делать.

Код:
Function Main(inputs, outputFolder, params)
    For Each input in inputs
    WScript.Echo(Recode("Просто текст", "cp866", "windows-1251"))
    Next
    
    Main = "OK"
        
End Function


    Function Recode(StrText, SrcCode, DestCode)
        With CreateObject("ADODB.Stream")
            .Type = 2
            .Mode = 3
            .Charset = DestCode
            .Open
            .WriteText (strText)
            .Position = 0
            .Charset = SrcCode
            Recode = .ReadText
            .Close
        end with
    End Function

Dim inputs()
Dim outputFolder
Dim params()

Main inputs, outputFolder, params

Не подскажете, где ошибка, почему это выскакивает?
121472
 
jdbc драйвер стоит. Через ноду в АЕ доступ к MySQL есть.
Но у меня сразу одним файлом и запрос данных из БД, и замена (если нужно) "." на "," (или обратно)... плюс всякие If...else и т.п.
Я пока не настолько SQL знаю, что бы всё это на нём делать.

Всё это в sql есть, да и отлаживать проще. Ну кому что...
Ошибок нет, у тебя в логе так и написано: <none>
 
  • Спасибо
Реакции: Spirit412
Спасибо.
Теперь стало намного проще.
И ошибки отслеживаются.
Это конечно не трай...кетчь JScript. Но уже не плохо )