【发布时间】:2018-05-17 03:49:38
【问题描述】:
我的计算机上有一项任务,从我的服务器下载每日备份。基本上是:
bash.exe -c "cd /mnt/d/server_backups && ./download_backup.sh"
这确实有效,但是它总是弹出 cmd 窗口,这实际上不会打扰我,如果不是因为它打断了我正在做的任何事情(游戏、看电影、工作)并且只是把我扔了到桌面。
将任务更改为“无论用户是否登录都运行”不起作用,因为显然 windows 会话零(无论是什么)无法使用 bash 发起调用。
是否有另一种方法可以不显示 cmd 窗口,或者在没有 SO 自行决定我希望它主要集中于它并最小化其他所有内容的情况下执行它?
【问题讨论】:
-
那是控制台窗口,不是 CMD 窗口。与任何控制台应用程序一样,如果进程未标记为分离运行,则 bash.exe 会分配一个新控制台,即
DETACHED_PROCESS。但是,经过测试,如果未设置进程控制台句柄,WSL 似乎无法初始化,即进程必须附加到控制台。您的选择是通过STARTUPINFOwShowWindow字段创建不带窗口(即CREATE_NO_WINDOW)或隐藏窗口的控制台。 -
在任何一种情况下,您都需要一种脚本语言(例如 Python 或 PowerShell)来控制如何创建 bash.exe 进程,因为任务调度程序不提供这种级别的控制。跨度>
-
你能想象用 Cygwin 代替 Linux 的 Windows 子系统吗?
标签: windows bash cmd scheduled-tasks windows-subsystem-for-linux