Имя: Пароль:
1C
 
При запуске bat файла теряются русские символы
0 Viktor Zull
 
27.11.06
20:22
Уважаемые участники форума, возможно мой вопрос не связан прямо с 1С, а скорее с операционной системой, и мне неизвестно было в какую секцию его следовало отправить, поэтому он именно здесь.
Содержание его в следующем:

У меня создано на диске C 2 каталога:
"Из этой папки";
"В эту папку"

В каталоге "Из этой папки" есть файл "1.txt".

Я запускаю cmd.exe и пишу в нем строку копирования файла:

copy /y "C:\Из этой папки\1.txt" "C:\В эту папку\1.txt"

при выполнении этой команды файл копируется нормально.

Если я помещаю такую же команду в bat файл, а потом из cmd запускаю его, то русские символы заменяются на другие - совершенно непонятные, в результате чего путь к файлу не найден и файл не скопирован.
Строка выглядит так:

copy /y "G:\╚ч ¤Єющ яряъш\1.txt" "G:\┬ ¤Єє яряъє\1.txt"

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

Используется операционная система Windows XP Professional.
1 Валентин
 
27.11.06
20:37
а кодировка в которй батник сохранен какая?
ИМХО руские имена не всегда хорошо.
2 Viktor Zull
 
27.11.06
20:49
Наверное кодировка не DOS-овская а WINDOWS. Я сначала файл текстовый делаю, а потом ему расширение меняю на bat. В этом моя ошибка? Как мне точно файл в кодировке DOS cохранить?

Русские имена, да еще и с пробелами - это конечно не хорошо, но допустим файл должен везде правильно исполняться, у любого пользователя, на любом компе, и неизбежно найдутся такие, где ппаки будут названы русскими буквами.
3 Viktor Zull
 
27.11.06
20:49
Кстати, в 1с есть процедура КомандаСистемы(<Строка команды>).

Если я пишу (1):

КомандаСистемы("copy /y ""C:\Из этой папки\1.txt"" ""C:\В эту папку\1.txt""");

и (2):

КомандаСистемы("C:\Из этой папки\bb_test.bat");

Тогда в первом случае файл копируется, а во втором нет.

А ведь может возникнуть необходимость запустить bat файл из 1c.
4 Viktor Zull
 
27.11.06
20:52
При сохранении текстового файла блокнотам там есть параметр "Кодировка" со следующими значениями:
ANSI
Юникод
Юникод Bin Endian
UTF-8

Какой выбрать?
5 Viktor Zull
 
27.11.06
20:54
Попробывал во всех доступных в блокноте кодировках сохранить, все равно не понимаются русские символы.
6 Viktor Zull
 
27.11.06
20:58
Еще вот так мне сделать посоветовали:

В autoexec.nt добавить
lh %SystemRoot%\system32\kb16 ru

В реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\DosKeybCodes
значение ключа 00000409 изменить с us на ru.

Попробывал - не помогло.
7 Neco
 
27.11.06
20:58
(5) Нужна DOS кодировка. Обычно делаю батники в ФАРе так что проблем не вызывает.
8 Viktor Zull
 
27.11.06
21:01
Говорили мне когда-то, что в XP лучше исполняемые файлы делать не с расширением *.bat, а с *.cmd. Не знаю насколько это верно, но cmd также запускается - русский текст сбивается.
9 Viktor Zull
 
27.11.06
21:02
В ФАРе? Имеется ввиду Far manager?
10 Валентин
 
27.11.06
21:04
где-то абрахамс давал пример конвертации с ср866 на 1251 и обратно. Поройся по форуму
11 Viktor Zull
 
27.11.06
21:06
Хорошо, посмотрю.
12 Neco
 
27.11.06
21:12
(9) Да Far
13 Viktor Zull
 
27.11.06
21:23
Достал FAR. Вот, только видел его последний раз очень давно. Neco, Вы вероятно часто с этой программой работаете, подскажите как мне файл создать.
14 Валентин
 
27.11.06
21:24
шифт+ф4 - имя. Редактируем. ф8 - меняет кодировку.

Это и еще много интересного можно узнать нажав ф1 или вспоммнив как работается в нортоне
15 Neco
 
27.11.06
21:29
(13) Не так уж часто, но команды за 20 лет не сменились: Shift+F4 - создать и редактировать файл, F4 - редактировать, F3 - просмотр, F8 - сменить кодировку. Вообщем, Валентин тебе уже подсказал, спасибо ему.
16 Viktor Zull
 
27.11.06
21:35
Спасибо. Я когда файл свой открыл там была как раз такая строка:

copy /y "G:\&#9562;ч ¤Єющ яряъш\1.txt" "G:\&#9516; ¤Єє яряъє\1.txt"

Переписал её, сохранил. Теперь bat-ник запускается. Файл копируется.

Neco,Валентин,спасибо Вам большое.

А вот если я не Far буду использовать, а другие программы, разработанные для DOS, например Edit, Basic, или Turbo Pascal, тогда файл тоже в кодировке для DOS будет сохраняться? Получается программу для DOS надо использовать.
17 Валентин
 
27.11.06
21:43
Тут не важно что использовать. Важно какие данные ты подаешь на вход командного интерпретатора. просто кодировки очень сильно меняют смысл файла. Найди что нибудь типа iconv или recode и используй. Тогда будет не важно где ты создал файл
18 Viktor Zull
 
27.11.06
21:45
Проблема моя решена. Всем учавствовавшим в рассмотрение вопроса ещё раз большое спасибо.
Основная теорема систематики: Новые системы плодят новые проблемы.