Баг "Запустить Процесс" кириллица ломает консоль



  • Доброго времени суток. Столкнулся с багом который хочу показать примере.

    Создадим две переменные в рабочем окне экшена "Управление Процессами => Запустить Процесс"

    @echo off
    set variable1=abcd
    set variable2=абвгд
    

    После сохранения и запуска данного действия, в переменной вывода процесса с ошибками [[PROCESS_ERROR_OUTPUT]] мы увидим такую ошибку:

    "'ariable1' is not recognized as an internal or external command,
    operable program or batch file.
    
    'ariable2' is not recognized as an internal or external command,
    operable program or batch file."
    

    Складывается ощущение, что кто-то "съел" первые 5 символов в начале каждой строки нашей команды и она не дошла до интерпретатора командной строки в первоначальном виде.

    Хорошо, тогда добавим 5 пробелов в начало каждой строки для проверки:

         @echo off
         set variable1=abcd
         set variable2=абвгд
    

    Действительно, ошибка исчезла. Приводит к этой ошибке строка "set variable2=абвгд", а именно присутствие кириллических символов. Но главное то, что чем больше символов в строке, тем больше будет "cъедено" символов в начале строки. В крупных командных файлах это доставляет много проблем, или даже делает их работу невозможной (как в моём случае).
    Смена кодировок не помогла.

    Прошу проверить, и ответить проявится ли данная ошибка у вас.
    Не хотелось бы лишний раз тревожить уважаемого @support но проблема очень похожа на баг.
    Спасибо за потраченное время.

    Версия BAS: 22.6.5
    Windows 10 Enterprise LTSB (x86/x64) 1607



  • @KONKORD said in Баг "Запустить Процесс" кириллица ломает консоль:

    Прошу проверить, и ответить проявится ли данная ошибка у вас.
    Не хотелось бы лишний раз тревожить уважаемого @support но проблема очень похожа на баг.
    Спасибо за потраченное время.

    Наконец то у меня дошли руки до этого бага.
    Ошибка кроется в символе переноса строки. Например, что бы повторить баг, достаточно использовать любой код с переносом строк и содержащий кирилицу:

    echo один
    echo два
    echo три
    

    95724f76-084a-417d-a686-bb6f9d751b14-изображение.png

    Если открыть созданный BAS'ом bat файл, то всё выглядит правильно:
    9f4317f0-3140-4693-a131-fc041d91f767-изображение.png

    но выполнение этого bat файла так же завершится ошибкой:
    753c00fe-3f30-43b5-ac2f-ea5d31a489ff-изображение.png


    Причём если создать точно такой же файл руками, то он выполнится корректно:

    3fb4bd39-5f0e-4e60-b250-4c468f4c70b1-изображение.png

    0a534775-1333-47ac-b2a0-19e20f76a796-изображение.png


    А теперь разгадка, что же именно здесь не так:

    bat файл BAS'a использует для переноса строки символ \n

    88ca8653-ae85-47bd-8422-90fa4cf69aba-изображение.png

    когда как текстовый редактор ставит \r\n

    38e91036-cdf8-444a-af39-ac8f7a67f856-изображение.png

    Всё :D
    Что бы избежать ошибки достаточно в ручную заменить переносы строки в коде на \r\n:

    echo один\r\necho два\r\necho три
    

    и выполнить полученный код

    05f4a93d-003d-4430-a902-ec8bd4ef3e34-изображение.png

    4598182e-b42c-431c-a2ed-38a4ac8dd325-изображение.png


    Для наглядности:
    Тестовый скрипт 779.xml
    Временный bat файл BAS temp_7uwM4Oj6gT.bat
    bat файл созданный руками 1.bat



  • @Fox А это в следующей версии пофиксят? Тут "работы" для фикса - пара минут...



  • @DoctorKrolic said in Баг "Запустить Процесс" кириллица ломает консоль:

    @Fox А это в следующей версии пофиксят? Тут "работы" для фикса - пара минут...

    Не знаю пока



  • @Fox Вау, спасибо огромное, вы мне очень помогли!



  • @DoctorKrolic said in Баг "Запустить Процесс" кириллица ломает консоль:

    @Fox А это в следующей версии пофиксят? Тут "работы" для фикса - пара минут...

    пофиксили


Log in to reply