Автокликер Clickermann :: Форум
Основной раздел => Ошибки => Topic started by: dramster on June 19, 2018, 12:08:48 PM
-
демонстрационный код:
STRWRITELN ("test.bat", "pause", 1) //не выполняется
EXECUTE ("test.bat")
wait(2)
STRWRITELN ("test.bat", "pause") //выполняется, скрин ниже
EXECUTE ("test.bat")
halt
(https://i.imgur.com/GV0sVgJ.png)
в батнике:
pause
pause
получается, что к первой строке дописывается какаято ересь, и она игнорируется. в 4.13.010b вроеде еще работало правильно.
-
получается, что к первой строке дописывается какаято ересь, и она игнорируется. в 4.13.010b вроеде еще работало правильно.
Эта ересь называется BOM - маркер последовательности байтов.
Вот мы здесь затрагивали переход на UTF-8 и BOM в частности.
http://crapware.aidf.org/forum/index.php?topic=356.msg26754#msg26754
К несчастью bat кажется не понимает BOM и соответственно метку не игнорирует.
Можно попробовать создать файл заранее в нужной кодировке, не знаю при записи поменяет или нет.
Есть ещё мысль первой строкой заносить не команду, а комментарий... хотя нет, не запустится.
Ну и простые команды/серии команд можно запускать напрямую не записывая в батник. Всегда так делаю если возможно.
Нельзя напрямую только сложные батники с циклами и сменой кодировок для ввода-вывода. Ну может ещё для работы с параметрами, тут хз.
-
Похожая проблема, хотя вроде не смертельная.
TFCLEAR("config.ini", 0) // после очистки меняет кодировку файла ANSI на UTF-8
INIWRITE("config.ini", "Параметр", "Значение", "Секция") // делает запись, или создает новый файл в кодировке ANSI
// Если файл "config.ini" очистить, не удаляя его с диска, то сделать запись кирилицей через INIWRITE() уже не получится
-
P.S. при записи меняет кодировку, поэтому предварительное создание не катит.
P.P.S. нашёл костыль. Будем писать в файл не кликером, а самими cmd командами.
// добавляем строку в файл (ели создаём с 1 строкой, просто >)
EXECUTE("cmd.exe", "/C Echo pause >> test.bat")
// теперь вызываем
EXECUTE ("test.bat")
Да здравствуют новые костыли, старые уже надоели.
Всё это конечно, чаще не нужно и можно просто вызывать команды напрямую (надеюсь pause это пример?).
-
Всё это конечно, чаще не нужно и можно просто вызывать команды напрямую (надеюсь pause это пример?).
конечно пример. сення никак не мог понять че не работает... вышел из положения вот таким кастылем:
STRWRITELN ("test.bat", "1", 1) //пишем лишьбы что в файл .bat
STRWRITELN ("test.bat", "clip < text.txt") //помещаем содержимое файла в буфер обмена
EXECUTE ("test.bat")
-
таки обратной совместимости прямо вообще со всем не вышло...
в принципе тут решений несколько. либо до кучи прилепить еще и команду перекодирования текстовых файлов (имхо худший варик). либо приделать какой нить костыль внутренний, который ИСКЛЮЧИТЕЛЬНО батники будет сохранять в ANSI (имхо глупейший варик). либо реализовать в смамом кликере, то, что вам надо от батников этих. а это я полагаю в 99% примитивные файловые операции. в принципе ввиду отсутствия идей была мысль прикрутить этот пак команд, шоб прям воще все можно было делать из км.
ну а так да. в первую строчку любую фигню пишите и он просто проскочет и пойдет дальше
-
А, ну и хрен с ним.
-
А вот и второй наступивший
http://crapware.aidf.org/forum/index.php?topic=4059.0
Только не на bat, а уже на ini.
Говорил я, что с этим BOM намучаемся, какой бы стандарт он не был.
Теперь при команде читающей ini нужно прикрутить отпиливание BOM если он есть. Записывающей - не знаю.
-
а вот это не ко мне. ну ко мне конечно, но не ко мне. это к разрабам RAD Studio из 2012 года
я уже говорил что в ini поддержки юникода пока нет. ни с бом ни без него. ini файлы тока в ansi. кликер их выплевывает в ansi так же.
уверен в более новых студиях проблема давно решена
-
таки обратной совместимости прямо вообще со всем не вышло...
в принципе тут решений несколько. либо до кучи прилепить еще и команду перекодирования текстовых файлов (имхо худший варик). либо приделать какой нить костыль внутренний, который ИСКЛЮЧИТЕЛЬНО батники будет сохранять в ANSI (имхо глупейший варик). либо реализовать в смамом кликере, то, что вам надо от батников этих. а это я полагаю в 99% примитивные файловые операции. в принципе ввиду отсутствия идей была мысль прикрутить этот пак команд, шоб прям воще все можно было делать из км.
ну а так да. в первую строчку любую фигню пишите и он просто проскочет и пойдет дальше
да, если часть команд CMD будет реализована в самом кликере будет очень удобно.
Вот вариант, когда это не поможет таки:
%adb% shell input text I111II11
Ввода текста по ADB в программе в Bluestacks
Команда препроцессора, которая сообщает в какой кодировке будет сохраняться файл? Просто функция переключающая кодировку, в которой будет сохраняться файл?
Кстати в windows 7 как минимум нормально выполняются BATники с UTF-8 без BOM -> команда препроцессора которая меняет кодировку на "UTF-8 без BOM"
Немножко сумбурно, сорян! ::)
-
Они и в XP нормально выполняются, если без BOM.
Другое дело, если нужно в консоль писать на русском, тогда только 866 иначе кракозябры в выводе.