HoloPaladin
Новичок
- Сообщения
- 5
- Репутация
- 0
есть скрипт подключения к БД и выполнения операций с ней через командную строку. В данный момент он имеет вид:
Проблемное место очевидно - если isql затупил при старте, сенд шлет клавиши в тупящее окно.
Я ищу способ либо заставить скрипт как-то "ждать" выполнения предыдущей команды или придумать костыль.
Один костыль был придуман: просто писать все в батник и запускать его, тогда ведь все пойдет как один бат-файл, последовательно. Однако что бы я не писал во флаги FileOpen() батник создается в UTF-8 и командная строка его не хочет прожевывать с кириллическими символами в путях. А они там почти всегда есть.
Например вот так делаю батник и он все равно в UTF-8:
Добавление FileWriteLine($batfilename,'chcp 65001 >null')первой строкой записи в файл - почему-то проблему не решает, все равно кирилица не проходит в командную строку.
Код:
$cmp_win = Run(@ScriptDir&'\Server\FirebirdServer\isql.exe "'&$server&':'&$Database&'" -user sysdba -password masterkey')
WinWaitActive(@ScriptDir&'\Server\FirebirdServer\isql.exe')
sleep(2000)
send('UPDATE OR INSERT INTO "Settings" ("Key", "Value")' & "{ENTER}")
send("VALUES ('"&$s_key&"','"&$s_data&"');" & "{ENTER}")
send("commit;" & "{ENTER}")
Проблемное место очевидно - если isql затупил при старте, сенд шлет клавиши в тупящее окно.
Я ищу способ либо заставить скрипт как-то "ждать" выполнения предыдущей команды или придумать костыль.
Один костыль был придуман: просто писать все в батник и запускать его, тогда ведь все пойдет как один бат-файл, последовательно. Однако что бы я не писал во флаги FileOpen() батник создается в UTF-8 и командная строка его не хочет прожевывать с кириллическими символами в путях. А они там почти всегда есть.
Например вот так делаю батник и он все равно в UTF-8:
Код:
_FileCreate ( @ScriptDir&'\'&$batfilename)
FileOpen($batfilename,512)
FileWriteLine($batfilename,'"'&@ScriptDir&'\Server\FirebirdServer\isql.exe'&'"'&' "'&$server&':'&$Database&'" -user sysdba -password masterkey')
FileWriteLine($batfilename,'UPDATE OR INSERT INTO "Settings" ("Key", "Value")')
FileWriteLine($batfilename,"VALUES ('"&$s_key&"','"&$s_data&"');")
FileWriteLine($batfilename,"commit;")
FileClose($batfilename)
$cmp_win = RunWait($batfilename)
Добавление FileWriteLine($batfilename,'chcp 65001 >null')первой строкой записи в файл - почему-то проблему не решает, все равно кирилица не проходит в командную строку.