2014-10-01 43 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()