Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
ВнизПравильная кодировка в .bat файле Найти похожие ветки
← →
Destroyer © (2007-01-30 13:29) [0]Программа генерирует .bat фаил, в него пишутся пути к файлам. При выполнении сгенерированного файла, никакие команды, записанные в нем не выполняются, если в имени файла или пути к нему присутствует кириллица.
Пи его выполнении получаю :
Не удается найти C:\test2\─юъєьхэЄ Microsoft Office Word.docx
Где ─юъєьхэЄ - Документ.
Видимо, фаил пишется в неправильной кодировке. (Хотя при открытии в блокноте, все смотрится нормально). Как записать .bat фаил в нужной кодировке?
← →
alex_*** © (2007-01-30 13:35) [1]однако перекодировать надо
← →
Плохиш © (2007-01-30 13:42) [2]
> Destroyer © (30.01.07 13:29)
Записывай короткие имена.
← →
Sergey13 © (2007-01-30 14:17) [3]> [0] Destroyer © (30.01.07 13:29)
В кавычки длинные имена не пробовал брать?
← →
JFK&MM_extramarital_son (2007-01-30 14:22) [4]CtrlA + CtrlX + F8 + CtrlV
← →
alex_*** © (2007-01-30 14:25) [5]
> CtrlA + CtrlX + F8 + CtrlV
Это для фара?
← →
JFK&MM_extramarital_son (2007-01-30 14:26) [6]нет, это для дестройера
← →
novill © (2007-01-30 14:36) [7]> [3] Sergey13 © (30.01.07 14:17)
+1
← →
alex_*** © (2007-01-30 14:44) [8]а что толку брать в кавычки
> C:\test2\─юъєьхэЄ Microsoft Office Word.docx
?
← →
JFK&MM_extramarital_son (2007-01-30 14:44) [9]Видимо, фаил пишется в неправильной кодировке. (Хотя при открытии в блокноте, все смотрится нормально).
В блокноте кто-то поставил шрифт Terminal OEM/DOS
← →
Destroyer © (2007-01-30 14:48) [10]В кавычки конечно взял, иначе вообще не работает, они тут не причем. Все дело в кодировке
> JFK&MM_extramarital_son (30.01.07 14:22) [4]
> CtrlA + CtrlX + F8 + CtrlV
Не понял что имеется в виду, что за F8 ?
У меня пути к файлам не статичные, а генерируются в зависимости от ситуации, надо их как-то перекодировать. В какую кодировку? Наверное UTF8, и как?
← →
JFK&MM_extramarital_son (2007-01-30 14:49) [11]Не понял что имеется в виду, что за F8 ?
Сначала пойми в какой кодировке записан твой батник.
← →
Destroyer © (2007-01-30 14:54) [12]Мой батник записан в ANSI
← →
JFK&MM_extramarital_son (2007-01-30 14:55) [13]Тогда верь тому, что написано в консоли при выполнении твоего батника.
← →
Sergey13 © (2007-01-30 14:56) [14]> [10] Destroyer © (30.01.07 14:48)
> В кавычки конечно взял, иначе вообще не работает,
Так с кавычками работает?
> [8] alex_*** © (30.01.07 14:44)
> а что толку брать в кавычки
>
> > C:\test2\-юъєьхэЄ Microsoft Office Word.docx
>
> ?
То, что это наверное вывод консоли при выполнении батника. А ее еще возможно надо настроить на вывод вин-кодировки.
← →
Destroyer © (2007-01-30 14:57) [15]
> JFK&MM_extramarital_son (30.01.07 14:55) [13]
> Тогда верь тому, что написано в консоли при выполнении твоего
> батника.
Вопрос был такой: Как перекодировать в правильную кодировку при записи в батник и в какую?
← →
JFK&MM_extramarital_son (2007-01-30 14:57) [16]Мой батник записан в ANSI
Кстати неплохо бы увидеть здесь его реальное содержимое.
← →
JFK&MM_extramarital_son (2007-01-30 14:58) [17]Вопрос был такой: Как перекодировать в правильную кодировку при записи в батник и в какую?
Ни в какую, раз он у тебя уже в анси
← →
Vlad Oshin © (2007-01-30 15:05) [18]OemToChar(PChar(OldStr),PChar(NewStr))
← →
JFK&MM_extramarital_son (2007-01-30 15:06) [19]У тебя ошибка в подстроке "документ".
PS Верь тому, что написано в консоли.
← →
Destroyer © (2007-01-30 15:10) [20]Sergey13, мне выводить в консоль ничего не нужно, просто при выполнении батника его содержимое где присутствует кириллица не выполняется. Кодировка консоли, тут не причем, нужно чтобы батник выполнял записанные в него функции.
Код, пишущий батник:var ClCache : textfile;
...
batFilePath:=D+"\ClCache.bat";
assignfile(ClCache,batFilePath);
rewrite(ClCache);
writeln(ClCache,"@echo off");
writeln(ClCache,"echo Some info about this file");
...
writeln(ClCache,"del "+ """+ LockedFiles[j] +""");
writeln(ClCache,"del ""+ D +"\ClCache.bat"");
writeln(ClCache,"exit");
Сам батник:@echo off
echo Some info about this file
del "C:\test2\Документ Microsoft Office Word.docx"
del "C:\ClCache.bat"
exit
Результат:
При выполнении батника не удаляется фаил C:\test2\Документ Microsoft Office Word.docx
В консоли пишет:Some info about this file
Не удается найти C:\test2\─юъєьхэЄ Microsoft Office Word.docx
Вопрос:
Как правильно записать батник так, чтобы норально выполнялись в нем команды, для этого, очевидно, нужна правильная кодировка, как ее выставить при записи батника?
Теперь все, надеюсь предельно ясно.
OemToChar(PChar(OldStr),PChar(NewStr)) - попробую
← →
Плохиш © (2007-01-30 15:23) [21]Хм, для тех кто не ищет геморрой фирма мелкий&мягкий сделала функцию GetShortPathName.
← →
JFK&MM_extramarital_son (2007-01-30 15:26) [22]У него просто реально нет файла
C:\test2\Документ Microsoft Office Word.docx
если поверить в то, что батник в анси, (а вывод консоли это косвенно подтверждает), то других вариантов просто нет.
Не удается найти C:\test2\─юъєьхэЄ Microsoft Office Word.docx
Если файла нет, то его и не удается найти.
← →
JFK&MM_extramarital_son (2007-01-30 15:29) [23]Хотя все наоборот должно быть.
Батник должен быть в оем
← →
Destroyer © (2007-01-30 15:31) [24]
> JFK&MM_extramarital_son (30.01.07 15:26) [22]
> У него просто реально нет файла
> C:\test2\Документ Microsoft Office Word.docx
>
> если поверить в то, что батник в анси, (а вывод консоли
> это косвенно подтверждает), то других вариантов просто нет.
>
>
> Не удается найти C:\test2\─юъєьхэЄ Microsoft Office Word.
> docx
>
> Если файла нет, то его и не удается найти.
А я про что говорю? Я про это с первого поста говорю. ─юъєьхэЄ - вот как сделать так, чтоюы это нормально читалось из батника? А не в таком виде.
Использовать короткие имена... а если у меня 2 файла :
Документ Microsoft Office Word.docx и
Документ Microsoft Office Word1.docx
какой удалится? Так что это не выход. Нужно всего лишь сделать так, чтобы батник читался нормально. Как это сделать?
P.S. попробовалtempf:=LockedFiles[j];
OemToChar(PChar(tempf),PChar(tempstr)) ;
Выдает ошибку Access violation в users32.dll
← →
JFK&MM_extramarital_son (2007-01-30 15:31) [25]Что еще раз подтверждает тезис о том, что надо тупо верить тому, что система пишет в консоли в ответ на ваши батники.
есть файл
C:\test2\Документ Microsoft Office Word.docx
и нет файла
C:\test2\─юъєьхэЄ Microsoft Office Word.docx
← →
JFK&MM_extramarital_son (2007-01-30 15:32) [26]Выдает ошибку Access violation в users32.dll
<Цитата>
Пушкин убит на дуэли.
Память выделять теперь надо самому.
← →
Destroyer © (2007-01-30 15:35) [27]Выделять память подо что? Переменные определены, если можно пример.
← →
Sergey13 © (2007-01-30 15:36) [28]> [20] Destroyer © (30.01.07 15:10)
Создай (как угодно) файл "C:\test2\Document Microsoft Office Word.docx", переделай (руками) соответственно батник. Попробуй выполнить. Хоть понятно будет кирилица или нет влияет.
← →
Destroyer © (2007-01-30 15:39) [29]Sergey13, пишу чисто в консоси del "C:\test2\Документ Microsoft Office Word.docx" - работает. Батник читается в консоль при вывполнении в неправильной кодировке. Отсюда и проблема, надо перекодировать, вот как... похоже CharToOem, но пока не понял как правильно ее использовать.
← →
JFK&MM_extramarital_son (2007-01-30 15:41) [30]Sergey13, пишу чисто в консоси del "C:\test2\Документ Microsoft Office Word.docx" - работает.
В русской винде русский язык консоли отличается от "других русских языков" в русской винде.
Потому и работает при вводе в консоль.
И не работает из батника.
← →
Destroyer © (2007-01-30 15:44) [31]Хех,
> Выделять память подо что? Переменные определены, если можно
> пример.
хотелось бы пример выделения памяти для правильной работы CharToOem и OemToChar
← →
JFK&MM_extramarital_son (2007-01-30 15:46) [32]SetLength(newoemstring,Length(oldansistring));
← →
Destroyer © (2007-01-30 16:08) [33]при преобразовании OemToChar(PChar(tempf),PChar(tempstr)) ;
получаем в батнике:
del "C:\test2\-юъєьхэЄ Microsoft Office Word.docx"
в консоли:
Не удается найти C:\test2\-■·║№ї¤к Microsoft Office Word.docx
при преобразовании CharToOem(PChar(tempf),PChar(tempstr)) ;
получаем в батнике:
del "C:\test2\„®Єг¬Ґв Microsoft Office Word.docx"
мы как бы выполнили предперекодирование
и все выполняется. Наконец-то. Спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.039 c