#javascript #xml #vbscript
#javascript #xml #vbscript
Вопрос:
Пытаюсь написать макрос распознавания речи Windows.Код приведен ниже. После выполнения проигрыватель возвращает «D:MusikMediaSong1.mp3 не найден». То есть обратные косые черты устраняются. Я попытался указать путь с самим аргументом в oShell.run, но возвращает ту же ошибку. Однако, как вы можете видеть, косая черта непосредственно перед именем аудиофайла сохраняется. И пробелы также сохраняются в имени файла, хотя я не знаю, совпадает ли это с path. В любом случае, я могу заставить это работать? ИЛИ не могли бы вы показать мне, как это делается в VBScript?
Кроме того, есть такая странная проблема, что я могу запускать программы, если они установлены либо в папке system32, либо на диске (а не внутри папок внутри диска), например D:KMPlayer.exe или E:KMPlayer.exe . Если путь, скажем, E:SoftwaresKMPlayerKMPlayer.exe , она не открывается. Итак, помогите, пожалуйста? 🙂
<?xml version="1.0" encoding="UTF-16"?>
<speechMacros>
<command>
<listenFor>Play [file]</listenFor>
<setTextFeedback speak="true">Playing {[file]}</setTextFeedback>
<script language="JScript">
<![CDATA[
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run('"D:KMPlayer.exe" "{[file.fileName]}"');
]]>
</script>
</command>
<fileNames name = "file" propname = "fileName" directory="D:MediaMusik" includeSubdirectories="true"/>
</speechMacros>
Спасибо! 🙂
Комментарии:
1. это моя помощь blogs.technet.com/b/heyscriptingguy/archive/2004/08/06 /…
2. Это то же самое, если вы используете
<run>
элемент вместо скрипта для выполнения программы?3. Путь вообще не соответствует ошибке. Вы уверены , что это ваш тестовый пример?
Ответ №1:
В строковых литералах Javascript вы должны экранировать «» на «\». Смотрите Документы.Итак:
oShell.Run('"D:KMPlayer.exe" "{[file.fileName]}"');
==>
oShell.Run('"D:\KMPlayer.exe" "{[file.fileName]}"');
Атрибуты XML (например. directory="D:MediaMusik"
следуют своим собственным правилам: здесь нет экранирования «».