Русские буквы в bat файле: .bat файл не понимает русские буквы (кириллицу)

windows — Проблема с русскими символами в bat при отправке на FTP.

Есть некий bat файл следующего содержания:

ftp -s:"%appdata%\param.txt" xx.xx.xxx.xx

Как понятно, данная строчка производит соединение к FTP серверу, исходя из параметров, находящихся в этом файле %appdata%\param.txt. %appdata% — переменная среды, зависящая от версии Windows. Данная переменная содержит имя папки текущего пользователя, например,

C:\Users\ЯЮЗЕР\AppData\Roaming

Вот в чем у меня возникла проблема: в файле параметров соединения (%appdata%\param.txt ) к FTP содержится приблизительно такая информация:

username
pass
...
mput "%appdata%\Opera\Opera\wand_%arr%.dat"  // ошибка, если есть русские символы!!!
...

Файл не передается на FTP, если в имени пользователя есть русские символы, да и не только имени, а вообще во всем пути %appdata%! А они есть в 99% случаях! Как это исправить, ребят? Подскажите, пожалуйста.

Пробовал через установку кодировки консоли chcp 1251(866 и 65001) , но не получилось…


P.S

@karmadro4, надеюсь в первую очередь на Вас =).

  • windows
  • ftp
  • bat






13

Вы так и не сказали, какая ошибка выводится. Ошибка с кодировкой решается довольно успешно.

  • Было:

    chcp 866
    ...
    ftp> mput c:\тест\тест.txt
    c:\тест\тест.txt:File not found
    
  • Стало:

    chcp 1251
    ...
    ftp> mput c:\тест\тест.TXT
    mput c:\тест\тест.txt? y
    200 PORT command successful. Consider using PASV.
    150 Ok to send data.
    226 Transfer complete.
    ftp: 4 bytes sent in 0,01Seconds 0,67Kbytes/sec.
    






4

Не знаю, почему у тебя не получается, у меня тоже была такая проблема. Решил «кавычками» —
open *****
USER ***** *****
quote PASV
cd htdocs/nnv/130/
send "D:\Подпапка\Сам файл. doc"
quit

Заметил также, что файлы могут не отправляться, даже, если в названии папки или файла на английском языке стоит пробел. Как с другими символами — не знаю, про пробел точно уверен!







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации



Почта

Необходима, но никому не показывается




By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.


Как в CMD сменить кодировку? Русский текст в CMD

Время чтение: 4 минуты
2014-01-19

Как корректно отобразить Русский текст в CMD. Проблемы с кодировкой могут возникнуть, например, при выполнении Bat файла, когда нужно вывести в консоль русский текст и при других обстоятельствах, о которых речь пойдёт далее.

Рассмотрим пример: когда нужно вывести в консоль Русский текст, скажем «Примет мир». Для этого создадим Bat файл с именем «1.bat». Используйте для этого обычный Блокнот Windows (Notepad.exe) Запишем в него  следующие строки!

@Echo off

echo.
echo ПРИВЕТ МИР
echo.
Pause

1

2

3

4

5

6

@Echo off

 

  echo.

     echo ПРИВЕТ МИР

    echo.

Pause

Для тех, кто не понял или не в курсе, строчки «echo.» я добавил специально, что бы были отступы, от строки «Примет мир»

Теперь запускаем файл 1.bat и результат будет такого вида.

Как видим проблема с кодировкой в cmd на лицо. И произошло это по следующей причине.

Стандартный блокнот Windows сохранил Bat файл в кодировке «1251» а консоль вывела его в кодировки «866». Вот от сюда все проблемы!

Решения проблемы с кодировкой в CMD. 1 Способ.

Для решения проблемы нужно просто использовать текстовой редактор, с помощью которого можно сохранить текст в кодировке «866». Для этих целей прекрасно подходит «Notepad++» (Ссылку для загрузки Вы можете найти в моём Twitter-e).

Скачиваем и устанавливаем на свой компьютер «Notepad++».

После запуска «Notepad++» запишете в документ те же строки, которые мы уже ранние записывали в стандартный блокнот.

@Echo off

echo.
echo ПРИВЕТ МИР
echo.
Pause

1

2

3

4

5

6

@Echo off

 

  echo.

     echo ПРИВЕТ МИР

    echo.

Pause

Теперь осталось сохранить документ с именем «2.bat» в правильной кодировке. Для этого идём в меню «Кодировки > Кодировки > Кириллица > OEM-866»

и теперь сохраняем файл с именем «2.bat» и запускаем его! Поле запуска результат на лицо.

Как видим, текст на Русском в CMD отобразился, как положено.

Решения проблемы с кодировкой в CMD. 2 Способ.

Теперь рассмотрим ещё одну ситуацию, когда могут возникнуть проблемы с кодировкой в CMD.

Допустим, ситуация требует сохранить результат выполнения той или иной команды в обычный «TXT» файл. В приделах этого поста возьмём для примера команду «HELP».

Задача: Сохранить справку CMD в файл «HelpCMD.txt. Для этого создайте Bat файл и запишите в него следующие строки.

@Echo off

Help > C:\HelpCMD.txt
Pause

@Echo off

 

Help > C:\HelpCMD.txt

Pause

После выполнения Bat файла в корне диска «C:\» появится файл «HelpCMD.txt» и вместо справки получится вот что:

Естественно, такой вариант не кому не понравится и что бы сохранить справку в понятном для человека виде, допишите в Bat файл строку.

chcp 1251 >nul

chcp 1251 >nul

Теперь содержимое кода будет такое.

@Echo off
chcp 1251 >nul

Help > C:\HelpCMD.txt

Pause

1

2

3

4

5

6

@Echo off

chcp 1251 >nul

 

Help > C:\HelpCMD. txt

 

Pause

После выполнения «Батника» результат будет такой:

Вот так на много лучше, правда?

Пожалуй, на этом я закончу пост. Добавить больше нечего. Если у Вас имеются какие-то соображения по данной теме, буду рад Вашему комментарию к посту.

Дополнительно из комментариев то Garric

Автор очень хорошо описал принцип. ! Но это неудобно.
Нужно бы добавить. Если автор добавит это в статью то это будет Good.
Создаём файл .reg следующего содержания:
——
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.bat\ShellNew]
«FileName»=»BATНастроенная кодировка.bat»
——
Выполняем.
——
Топаем в %SystemRoot%\SHELLNEW
Создаём там файл «BATНастроенная кодировка.bat»
Открываем в Notepad++
Вводим любой текст. (нужно!) Сохраняемся.
Удаляем текст. Меняем кодировку как сказано в статье. Сохраняемся.
———-
Щёлкаем правой кнопкой мыши по Рабочему столу. Нажимаем «Создать» — «Пакетный файл Windows».
Переименовываем. Открываем в Notepad++. Пишем батник.
В дальнейшем при работе с файлом не нажимаем ничего кроме как просто «Сохранить». Никаких «Сохранить как».

windows — Пакетный файл замены символов

спросил

Изменено
6 лет, 6 месяцев назад

Просмотрено
1к раз

Я пытаюсь выполнить пакетный скрипт с помощью командной строки Windows для преобразования некоторых символов, например:

 É в Й
Ö к Ц
от О до У
от Ê до К
от Å до Å
от Н до Н
à к Г
от Ø до Ø
Ù к Щ
от Ç до З
 

безуспешно. Это потому, что я использую программу, которая не поддерживает кириллический шрифт.

А у меня уже есть файл с такими словами, типа:

 ОБОГРЕВ ЗОНЫ 1
ДАВЛЕНИЕ ЦВЕТА 1
. ..
и так далее...
 

Возможно ли это?

  • windows
  • батник
  • заменить
  • cmd
  • кириллица

2

Я предполагаю, что вы хотели бы преобразовать набор символов (псевдоним кодовой страницы) файла, чтобы его можно было открыть и прочитать.
Я предполагаю, что вы используете компьютер с Windows.

Допустим, ваш файл russian.txt и когда вы открываете его блокнотом, символы не имеют никакого смысла. Кодировка символов файла russian.txt , скорее всего, ANSI, а его кодовая страница — Windows-1251.
Несколько слов о кодировке символов:

  • В ANSI один символ имеет длину один байт.
    • Разные языки имеют разные кодовые страницы: Windows-1251 = русский, Windows-1252 = западные языки (английский, немецкий, шведский…), Windows-1253 = греческий…
  • В UTF-8 английские символы имеют длину один байт, а неанглийские символы — два байта.
  • В Unicode все символы имеют длину два байта.
  • UTF-8 и Unicode не нуждаются в кодовых страницах.

Вы можете проверить кодировку, открыв файл в блокноте и нажав Файл, Сохранить как. В правом нижнем углу рядом с кнопкой Сохранить вы можете увидеть кодировку.

Погуглив, я нашел сайт, где вы можете сделать преобразование кодировки символов онлайн. Я не проверял, но вот адрес:

  • http://i-tools.org/charset

Я написал скрипт (= небольшую программу), который меняет кодировку символов с любой комбинации ANSI и кодовой страницы на UTF-8 или Unicode или наоборот.

Допустим, у вас есть компьютер с английской Windows и вы хотите преобразовать russian.txt (ANSI/Windows-1251) в UTF-8.
Вот как это сделать:

  • Откройте эту веб-страницу и скопируйте на ней скрипт в буфер обмена:
    • VB6/VBScript изменить кодировку файла на ansi
  • Создайте новый файл с именем ConvertCharset. vbs в той же папке, где находится russian.txt , скажем C:\Temp.
  • Откройте ConvertCharset.vbs в блокноте (щелчок правой кнопкой мыши + редактирование) и вставьте.
  • Открыть CMD (кнопка Windows+R, cmd, Enter).
  • В окне типа CMD (нажмите клавишу Enter на каждом конце строки):


компакт-диск C:\Temp\
cscript ConvertCharset.vbs /InputCharset:Windows-1251 /OutputCharset:utf-8 /InputFile: russian.txt /Выходной файл:russian_utf-8.txt

Теперь вы можете открыть russian_utf-8.txt в блокноте, и вы увидите русские символы в порядке.

Дополнительная информация:

  • http://en.wikipedia.org/wiki/Character_encoding
  • http://en.wikipedia.org/wiki/Windows-1251
  • http://en.wikipedia.org/wiki/UTF-8
  • VB6/VBScript изменить кодировку файла на ansi

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

кодовых страниц — Запуск файла BAT/CMD с диакритическими знаками в нем

спросил

Изменено
3 года, 5 месяцев назад

Просмотрено
55 тысяч раз

У меня есть пакетный файл Windows, в котором содержится инструкция по выполнению EXE-файла в папке, путь которой содержит символы с диакритическими знаками. Ниже приведено содержимое командного файла.

 @эхо выключено
C:\español\jre\bin\java.exe -версия
 

C:\español\jre\bin\java.exe — этот путь существует и является правильным. Я могу запустить эту команду непосредственно в cmd.exe. Но когда я запускаю команду из файла bat/cmd, она не говорит: «Система не может найти указанный путь»

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

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

  • пакетный файл
  • кодовые страницы

1

Другой способ сделать это в Windows — использовать wordpad.exe :

  1. Запустить wordpad.exe
  2. Напишите свой сценарий, как обычно, с акцентами
  3. Выберите Сохранить как > Другие форматы
  4. Выберите, чтобы сохранить его как Текстовый документ MS-DOS (*.txt)
  5. Изменить расширение файла с .txt на .bat

3

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

 @эхо выключено
for /f "токены=2 разделителя=:." %%x в ('chcp') установить cp=%%x
chcp 1252> ноль
:: ваши вещи здесь ::
chcp %cp%> ноль
 

Работает как шарм!

2

Я использую Notepad ++, и у него есть возможность изменить «наборы символов», OEM-US сделал свое дело. 😉

4

Поскольку у вас есть @echo off , вы не можете видеть, что ваш пакет отправляет в командную строку. Воспроизведение вашей проблемы с этим кажется, что – символ неправильно интерпретируется, так как я вижу вывод:

 C:\espa±ol\jre\bin\java -version
Система не может найти указанный путь.
 

Мне удалось заставить его работать, повторив команду в командном файле из командной строки, т.е.

 echo C:\español\jre\bin\java.exe -version>>test.bat
 

Это, кажется, переводит символ в то, что ищет командная строка, хотя я тестировал его только с английским языковым стандартом, поэтому я не знаю, будет ли он работать во всех ситуациях для вас. Кроме того, если вы откроете пакет в текстовом редакторе, таком как блокнот, он будет выглядеть неправильно ( C:\espa¤ol\jre\bin\java.exe )

Используйте Alt + 0164 для ¤ вместо Alt + 164 ñ в пакетном файле… Это будет выглядеть странно , но ваш скрипт должен работать.

1

Вы можете использовать код Visual Studio, и он позволит вам выбрать кодировку, которую вы хотите использовать. В правом нижнем углу выберите кодировку и отобразится опция «сохранить с кодировкой». Выберите DOS и сохраните акцентированные символы.

У меня тоже была такая проблема. Я пытался создать простой пакетный файл XCOPY для копирования электронной таблицы из одной папки в другую. В его названии был символ «é», и он отказался копировать.

Даже попытка использовать предложения Каталин и Металкодера не сработала на моей неолитической машине с Windows XP. Затем я вдруг подумал: почему бы не сделать все как можно проще (поскольку я сам чрезвычайно простодушен, когда дело доходит до компьютеров) и просто заменить в коде пакетного файла «é» подстановочным знаком «?».

И знаете что? Это сработало!

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.