Вопрос по VBScript в AE

Spirit412

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

splxgf

12 лет на форуме
Сообщения
7 742
Реакции
3 424
В настройках винды есть выбор кодировки по-умолчанию для неюникодовских программ, поставьте 1251. Возможно поможет.
lan.PNG
 
Последнее редактирование:
  • Спасибо
Реакции: Chiga

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Как это сделать?
121375
 

baraka

Участник
Сообщения
193
Реакции
90
Есть некий 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
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Нет, не получается.
В консоле ответ:
Код:
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: ЌҐ¤®ЇгбвЁ¬л©  § Є
 

baraka

Участник
Сообщения
193
Реакции
90
Нет, не получается.
В консоле ответ:
Код:
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
 

baraka

Участник
Сообщения
193
Реакции
90
А с batch всё намного проще, в начале скрипта нужно указать chcp 1251
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Ну так ты сначала просишь, чтобы тебе переменная возваращала правильный текст, а после системуню ошибку.

Я твой код пихнул в 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).
 
Последнее редактирование:

baraka

Участник
Сообщения
193
Реакции
90
Я твой код пихнул в 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

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
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
 

baraka

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

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

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Спасибо.
Теперь стало намного проще.
И ошибки отслеживаются.
Это конечно не трай...кетчь JScript. Но уже не плохо )