2011-10-30 43 views
0

試圖寫一個windows語音識別宏。代碼如下。執行後,播放器返回「D:MusikMedia \ Song1.mp3找不到」。也就是說,反斜槓被消除了。我嘗試在oShell.run中給出參數本身的路徑,但返回相同的錯誤。但是,正如您所看到的,音頻文件名稱之前的斜槓仍然保留。而且空格也保留在文件名中,但我不知道它是否與路徑相同。無論如何,我可以得到這個工作?或者你能告訴我它是如何在VBScript中完成的?缺少反斜槓? - JScript或VBScript

另外,有一個奇怪的問題,我可以執行程序,如果它們安裝在system32文件夾中,或者它位於驅動器中(而不是在驅動器內的文件夾內),如D:\ KMPlayer.exe或E:\ KMPlayer.exe。如果路徑是E:\ Softwares \ KMPlayer \ KMPlayer.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:\Media\Musik\"  includeSubdirectories="true"/> 
</speechMacros> 

謝謝! :)

+0

這幫助我的http://博客.technet.com/b/heyscriptingguy/archive/2004/08/06/how-can-i-use-long-file-names-as-parameters.aspx – david

+0

如果您使用[''] (http://archive.msdn.microsoft.com/wsrmacros/Wiki/View.aspx?title=run&referringTitle=Executors)元素而不是腳本到e執行程序? –

+0

該路徑與任何錯誤都不匹配。你是否確信這是你的測試用例? –

回答

0

在Javascript字符串文字中,您必須通過「\\」轉義「\」。見the docs.這樣:

oShell.Run('"D:\KMPlayer.exe" "{[file.fileName]}"'); 

==>

oShell.Run('"D:\\KMPlayer.exe" "{[file.fileName]}"'); 

XML屬性(例如directory="D:\Media\Musik\"按照自己的規則:沒有 「\」 逃離這裏