Отсутствуют обратные косые черты? — JScript или VBScript

#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" следуют своим собственным правилам: здесь нет экранирования «».