2014-04-14 172 views
2

問題:如何在Lua中使用三個命令行選項執行OS命令?os.execute()與命令行選項

我有一臺設備連接到我的電腦。 (Windows 7中,USB電纜,典型的企業)

控制設備就設在這裏的軟件...

C:\Program Files (x86)\PowerUSB\ 

可執行文件(又名 「計劃」)的名字是.. 。

pwrusbcmd 

即程序想要三個單數字參數1或0,以空格

我打開命令提示b分離牛,切換到該目錄,並測試所有8個案例。一切正常。

我然後切換到另一個子目錄,並試用了此命令

"C:\Program Files (x86)\PowerUSB\pwrusbcmd" 1 1 1 

這也工作得很好。

所以我想通了Lua的命令來執行該命令將要麼...

os.execute("C:\Program Files (x86)\PowerUSB\pwrusbcmd 1 1 1 ") 

os.execute("C:\\Program Files (x86)\\PowerUSB\\pwrusbcmd 1 1 1") 

Lua中運行的每個,無投訴,設備上不會發生任何操作。

於是,我就改變了命令本身的建設,與".."連接字符串總額的兩段,是這樣的...

os.execute("C:\\Program Files (x86)\\PowerUSB\\pwrusbcmd".." 1 1 1 ") 

仍然沒有行動。

我看着這裏StackOverflow上,發現

我同情每一個誰寫的那些人的問題。就像用戶ID 東西,我也試過..

  • 方括號
  • 引號("
  • 單,雙和三反斜槓
  • 前斜線和S(/s

到目前爲止,我無法找到一個單一的語法結構工作。

唯一的「修復」(如果曾經有過一個誤稱)我自己可以編寫的是編寫八個不同的MS-DOS bat文件,並給它們唯一的名稱。這使得機器事實上無法使用。

我該如何讓Lua執行這個命令?

C:\Program Files (x86)\PowerUSB\pwrusbcmd 1 1 1 

回答

3

你忘了周圍添加命令名稱的雙引號,最簡單的方法是使用單引號的字符串:

os.execute('"C:\\Program Files (x86)\\PowerUSB\\pwrusbcmd" 1 1 1') 
+0

正確!作品,謝謝。我又很聰明。 –

3

嘗試os.execute([["C:\Program Files (x86)\PowerUSB\pwrusbcmd" 1 1 1 ]])

我相信你的問題是文件路徑的空間。

我知道你說你使用了方括號,但是我看不到他們使用了什麼組合。這對我有用。

+0

也有效。是。 –

+0

好的,於皓用一個單引號來包裝整個內容,而你用了兩個方括號。這是記錄在http://www.lua.org或其他地方?謝謝,如果你能指出我。 –

+0

它在這裏:http://www.lua.org/pil/2.4.html「Long string」:) – Glitcher