【问题标题】:disable cmd output in lua在lua中禁用cmd输出
【发布时间】:2014-11-26 08:11:51
【问题描述】:

我使用以下 lua 代码创建了一些文件并在 game.txt 中添加了一些文本

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

makeFiles()

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

【问题讨论】:

    标签: lua cmd output


    【解决方案1】:

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

     f = assert (io.popen ('HELP'))
     --runs commands directly in cmd/terminal
    
     for line in f:lines() do
     --print(line)
    end
    
    f:close()
    

    【讨论】:

      【解决方案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显然是根据雨浩的回答)

      【讨论】:

        【解决方案3】:

        在 Windows 上,您可以将标准输出和突出错误重定向到 nul,如下所示:

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

        在 Unix 上类似:

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

        【讨论】:

        • 知道如何访问“nul”并将输出输入到我的脚本中吗?
        • 提出一个新问题;提示:弹出。
        • @user3714446 另一种选择是使用日志文件替换nul
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-02
        • 2015-05-01
        • 2010-09-13
        • 2021-08-25
        • 2011-04-01
        相关资源
        最近更新 更多