Показано с 1 по 2 из 2

Тема: Не получается приатачить файл с русским названием через коммандную строку

  1. #1
    Xbox
    Xbox вне форума
    Новичок
    Регистрация
    06.04.2004
    Сообщений
    9

    Не получается приатачить файл с русским названием через коммандную строку

    С помощью VBA из Excel генерирую батник состоящий из похожих строк. "Создать письмо на адрес…, приатачить файл…"

    Вот пример строки:
    "C:\Program Files\The Bat!\thebat.exe" /mailTO="test1@test1.com";S="Тестовый Сабдж";template="template.txt";A="D:\Folder\АКВА.r ar";QUEUE /nologo

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

    Попутная проблема. Если использовать русские буквы в subj, то после обработки командной строки в поле subj происходит какая-то перекодировка.
    Например, для команды S="Тестовый Сабдж"
    Результат - TхёЄютvщ Tрсфц

    Насколько я понял, я создаю батник в кодировке ANSI (Windows), а Бат считает, что вся командная строка в кодировке ASCI (Dos).

    Можно ли как-то Бат научить понимать русские буквы в командной строке? ???

  2. #2
    Xbox
    Xbox вне форума
    Новичок
    Регистрация
    06.04.2004
    Сообщений
    9

    Re:Не получается приатачить файл с русским названием через коммандную строку

    Я сам нашел решение.

    Действительно проблема в том, что батник создается в стандартной кодировке ANSI (Windows), а Бат считает, что вся командная строка в кодировке ASCI (Dos).

    Возможно есть какой-то способ указать Бату, как интерпретировать кодировку командной строки.

    Я поступил проще. Поскольку все мои строковые параметры формируются через VBA, я воспользовался простенькой функцией ConvertAnsiToOem.

    У кого нет возможности програмно менять кодировку командной строки, можно воспользоваться утилитой recode.exe. Сам не пробовал (нашел поиском по форуму).

    В результате командная строка теперь выглядит так:
    "C:\Program Files\The Bat!\thebat.exe" /mailTO="test1@test1.com";S="’Ґбв®ўл© ‘*Ў¤¦";template="template.txt";A="D:\Folder\ЂЉ‚Ђ.rar ";QUEUE /nologo

    В некоторых местах не понятно. Зато Бат правильно обрабатывает.

    На всякий случай приведу текст процедуры. Может кому пригодиться. Не сочтите за офтоп.
    Написано на Visual Basic. Можно запускать, например, с помощью VBA из Excel.

    ------
    Option Explicit

    Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, _
    ByVal lpszDst As String) As Long
    Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, _
    ByVal lpszDst As String) As Long

    Public Function ConvertAnsiToOem(ByVal strSrc As String) As String
    Dim strRes As String
    strRes = String(Len(strSrc), Chr(0))
    CharToOem strSrc, strRes
    strSrc = strRes
    ConvertAnsiToOem = strRes
    End Function

    Public Function ConvertOemToAnsi(ByVal strSrc As String) As String
    Dim strRes As String
    strRes = String(Len(strSrc), Chr(0))
    OemToChar strSrc, strRes
    strSrc = strRes
    ConvertOemToAnsi = strRes
    End Function

Похожие темы

  1. Как приатачить приатаченые файлы оригинального письма?
    от tnk в разделе The Bat!: вопросы и ответы
    Ответов: 3
    Последнее сообщение: 09.08.2006, 15:48
  2. PGP шифрация через командную строку
    от ElM в разделе The Bat!: вопросы и ответы
    Ответов: 2
    Последнее сообщение: 06.12.2005, 06:33
  3. Ответов: 1
    Последнее сообщение: 29.12.2003, 22:15
  4. не получается задать сигнальную строку…
    от misha в разделе The Bat!: вопросы и ответы
    Ответов: 3
    Последнее сообщение: 12.03.2003, 19:08
  5. Отправка вордовского письма через меню *Файл*
    от baston в разделе The Bat!: вопросы и ответы
    Ответов: 1
    Последнее сообщение: 14.02.2003, 08:04