2014-10-01 221 views
1

我用下面的Lua代碼來創建一些文件和寫一些文字補齊該game.txt中禁止CMD輸出

function makeFiles() 
os.execute("mkdir season\\week1") 
newFile = io.open("season\\week1\\game.txt", "a+") 
newFile:write('123') 
newFile:close() 
end 

makeFiles() 

的CMD告訴我是這樣的:「賽季\ week1」已經存在(翻譯來自德語)。我正在尋找一種方法來通過lua禁用CMD的輸出。在運行我的腳本之後,CMD中不應該有輸出來告訴我消息,我需要以一種無聲的方式運行代碼,用戶不應該看到這一點。我問,因爲我需要通常使用lua來禁用cmd的輸出。

回答

2

這不是一個lua問題。如果您想要使shell命令的輸出無聲,請使shell命令靜音。

做就是這個特定情況下,最簡單的方法是使用(假設你的系統有它)的-p參數mkdir這沉默的現有目錄中的錯誤。

您也可以(如果-p不存在,例如)只需測試目錄第一個os.execute("test -d season\\week1 || mkdir season\\week1")

最後,更一般地說,如果您不希望命令輸出將輸出重定向到/dev/nullos.execute("mkdir season\\week1 >/dev/null 2>&1")

上面假設了一個類似linux的環境。我不知道cmd.exe是否具有類似的重定向功能,儘管我想象它。 (>nul 2>nul顯然根據宇豪的答案)

1

在Windows上,你可以在標準輸出和出色的錯誤重定向到nul這樣的:

os.execute("mkdir season\\week1 >nul 2>nul") 

在Unix上,它類似於:

os.execute("mkdir season/week1 &> /dev/null") 
+0

任何想法如何訪問'nul'並獲得輸出到我的腳本? – Pekinese 2014-10-01 17:41:57

+0

提出一個新問題;提示:popen。 – 2014-10-01 18:00:08

+0

@ user3714446另一種選擇是使用日誌文件來替換'nul'。 – 2014-10-01 22:28:25

0

我需要禁用輸出給用戶,但我需要從運行cmd命令得到結果。我現在使用此代碼:

f = assert (io.popen ('HELP')) 
--runs commands directly in cmd/terminal 

for line in f:lines() do 
--print(line) 
end 

f:close()