如何让Windows下的Dart命令行程序不弹出CMD/Shell窗口?
解决Dart命令行程序运行时不显示终端窗口的方法
Windows平台
方法1:用VBS脚本包装执行
- 先将Dart代码编译成可执行文件:
dart compile exe your_script.dart -o your_program.exe
- 创建后缀为
.vbs的脚本文件(比如background_run.vbs),写入以下内容:
Set WshShell = CreateObject("WScript.Shell") WshShell.Run """C:\绝对路径\your_program.exe""", 0, False
- 参数
0表示隐藏窗口,False表示脚本无需等待程序执行完成即可退出。
- 双击运行这个VBS脚本,程序会在后台静默执行,不会弹出CMD窗口。
方法2:修改可执行文件的子系统类型
用Resource Hacker这类工具打开编译好的exe文件,找到PE头 -> 可选头 -> 子系统,将控制台子系统改为Windows子系统,保存后双击exe就不会弹出窗口。
Linux/macOS平台
后台运行命令
编译成可执行文件后,用nohup命令在后台启动,同时重定向输出避免占用终端:
nohup ./your_program > /dev/null 2>&1 &
nohup保证关闭终端后程序仍能运行,> /dev/null 2>&1将标准输出和错误输出全部丢弃。
双击运行(macOS)
创建一个Shell脚本(比如run_background.sh):
#!/bin/bash nohup /绝对路径/your_program > /dev/null 2>&1 &
给脚本添加执行权限:
chmod +x run_background.sh
设置终端允许双击执行脚本后,双击该脚本即可静默启动程序。
额外提示
确保程序没有未处理的输出(包括错误信息),即使代码里没写print,运行时的隐性错误输出也可能导致终端窗口被强制保留,所以运行时重定向输出到空设备是稳妥的做法。
内容的提问来源于stack exchange,提问作者Gamer153
相关产品推荐
相关产品推荐

