禁用 Lua 中的 cmd 输出

我使用以下 lua 代码创建一些文件并将一些文本附加到 game.txt 中:

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

makeFiles()

CMD 告诉我类似这样的信息:“season\week1”已经存在(翻译自德语)。我正在寻找一种通过 lua 禁用 CMD 输出的方法。运行我的脚本后,CMD 不应该输出告诉我消息,我需要以沉默方式运行代码,用户不应该看到此内容。我询问是因为我需要使用 lua 通常禁用 cmd 的输出。

点赞
用户258523
用户258523

这不是一个 Lua 的问题。如果你想要让 shell 命令的输出不显示,你需要让 shell 命令不输出。

对于这个特定的情况,最简单的方法是使用(假设你的系统有的话)mkdir 命令的 -p 参数,该参数可以使已存在的目录的错误信息不显示。

也可以(例如 -p 参数不存在)先测试目录是否存在,再执行命令 os.execute("test -d season\\week1 || mkdir season\\week1")

最后,更一般地,如果你不想要命令的输出,可以将输出重定向到 /dev/nullos.execute("mkdir season\\week1 >/dev/null 2>&1")

上述假设使用的是类 Linux 的环境。我不知道 cmd.exe 是否有类似的重定向能力,但我认为它可能有(根据 YuHao 的回答,可能是 >nul 2>nul)。

2014-10-01 13:23:20
用户1009479
用户1009479

在Windows中,您可以像这样将标准输出和突出错误重定向到“nul”:

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

在Unix中,它类似:

os.execute(“mkdir season / week1&> / dev / null”)
2014-10-01 13:24:19
用户3714446
用户3714446

我需要禁止向用户输出,但我需要获取运行cmd命令的结果。我现在使用了这段代码:

f = assert(io.popen('HELP'))
--直接在cmd/终端中运行命令

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

f:close()
2014-10-01 18:14:22