PDA

Показать полную графическую версию : CMD\BAT\SHELL неправильная кодировка


Darkar25
09-07-2018, 00:55
на просторах интернета я нашел батник который может посылать нажатия клавиш на любое открытое окно в виндусе...кароч...с цифрами всё исправно работает...но как дело дошло до букв...толи с кодировкой что толи я криворукий...я тыкал тыкал и в итоге понял как писать русские маленькие буквы... нужно писать большие английские...остальные попытки ничего не дали...кто может помочь?
@if (@X)==(@Y) @end /* JScript comment
@echo off
cscript //E:JScript //nologo "%~f0" "%~nx0" %*
exit /b %errorlevel%
@if (@X)==(@Y) @end JScript comment */
var sh=new ActiveXObject("WScript.Shell");
var ARGS = WScript.Arguments;
var scriptName=ARGS.Item(0);
var title="";
var keys="";
function parseArgs(){
if (ARGS.Length < 3) {
WScript.Quit(43);
}
title=ARGS.Item(1);
keys=ARGS.Item(2);
}
function escapeRegExp(str) {
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
function replaceAll(str, find, replace) {
return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}
parseArgs();
keys=replaceAll(keys,"^^","^");
sh.AppActivate(title);
sh.SendKeys(keys);
WScript.Quit(0);
надеюсь что кто-нибудь сможет помочь...
[UPD] если вписывать последовательность символов напрямую в батник а не выдавать их из другого батника то всё работает исправно...
[UPD] я всё починил сам)))тему отмечаю как решено...решение:сохранить файл в кодировке UTF-8 и в батнике написать chcp 65001

yurfed
09-07-2018, 01:15
надеюсь что кто-нибудь сможет помочь... »Попробуем.
Первой строкой пропишите
chcp 1251

Darkar25
09-07-2018, 01:22
Попробуем.
Первой строкой пропишите
chcp 1251 »
первой строкой нельзя...батник работать перестанет...написал там где можно...но буквы всё так-же перемешаны...

yurfed
09-07-2018, 01:37
первой строкой нельзя...батник работать перестанет » С какого перепугу перестанет?
Можете проверить или посмотреть сюда (https://winkomp.ru/russkiy-tekst-v-cmd)

написал там где можно... »А где можно?

Darkar25
09-07-2018, 01:40
Цитата Darkar25:
написал там где можно... »
А где можно? »
тут

Darkar25
09-07-2018, 01:40
Цитата Darkar25:
первой строкой нельзя...батник работать перестанет »
С какого перепугу перестанет? »
я хз...я пробовал уже в начала файла чтото писать...батник подумал что это тоже кусок скрипта и сказал что какаято ошибка компиляции...

Iska
09-07-2018, 02:00
.кароч...с цифрами всё исправно работает...но как дело дошло до букв...толи с кодировкой что толи я криворукий...я тыкал тыкал и в итоге понял как писать русские маленькие буквы... нужно писать большие английские...остальные попытки ничего не дали...кто может помочь? »
Забудьте про .SendKeys() как про страшный сон и плавно переходите к изучению AutoIt/AutoHotKey.

P.S. С консольными же приложениями так (послать нажатие клавиши) вообще не работают. Там перехватывают стандартные потоки и читают из них или пишут в них.




© OSzone.net 2001-2012