WSL 在 Windows 主机上打开窗口

WSL 在 Windows 主机上打开窗口

我制作了一个小的 bash 脚本。到目前为止,它在 Windows WSL 和 Linux 上运行良好。

现在我想要一个图形弹出窗口,让用户从设置列表中进行选择。我了解到你可以使用 VBS 来做到这一点,但我对此一无所知。是否可以将选择返回到我的 bash 脚本? .vbs 必须是什么样子?

或者也许有更简单的方法来做到这一点?

我的脚本打开一些文件,我想让用户为此选择他们的编辑器。

例如 Linux 上的 sublime 和 vim。或 Windows 上的 notepad++ 和 sublime。

我想避免 Windows 用户必须安装所有 x11 库,这就是为什么我不想使用 zenity 来完成此操作,我将在 Linux 上使用 zenity。我发现的第一件事是 Windows 上的 .vbs 脚本。

答案1

如果您想要在 Linux 环境中使用图形 UI,那么您肯定需要 X11。但如果您只想与 Windows GUI 进行交互,那么您可以这样做。基本上现在可以从 WSL 运行 Windows 工具。这意味着,如果您有一个可以运行的 Windows 脚本(例如从 CMD 或 WScript),您可以执行以下操作:

cmd.exe /c "path to script"
vbscript.exe /b "path to script"  :: where /b = batch mode

然后是返回值部分。在 bash 中,$?始终是上一个命令的退出状态。所以一旦你运行上面的行它关闭并返回1,然后您可以用来$?找出脚本返回的内容。 (这有点滥用退出状态,但如果它有效的话...)2这当然意味着您的 Windows 脚本的每个可能的返回值都需要一个唯一的 int,并且两个脚本都需要知道每个值是什么对应于.

(当然,编写脚本来呈现 GUI 是一个完全不同的问题,但您可以在超级用户.)

1explorer.exe这部分非常重要 - 您可以通过在引发错误的命令之后立即运行来自行测试。如果不关闭 bash 打开的资源管理器窗口,$?将显示之前命令的非零退出状态explorer.exe,但一旦关闭资源管理器,$?将显示 0(假设资源管理器没有出现任何问题)。

2警告:我自己实际上还没有尝试过这个过程。可能需要进行一些调整。

答案2

zenity我在评论中提到的克隆已经长大,支持相当多的对话框,并且仍然不依赖于X :https://github.com/ncruces/zenity

如果你使用自制

相关内容