WSLはWindowsホストでウィンドウを開きます。

WSLはWindowsホストでウィンドウを開きます。

私は小さなbashスクリプトを作成しました。これまでは、Windows WSLとLinuxでうまく動作します。

これで、ユーザーが設定リストから選択できるグラフィックポップアップが必要です。 VBSを使用してこれを行うことができることを理解していますが、これについて何も知りません。選択肢を私のbashスクリプトに戻すことはできますか? .vbs はどのようなものでなければなりませんか?

それとももっと簡単な方法がありますか?

私のスクリプトはいくつかのファイルを開き、ユーザーにエディターを選択するようにしたいと思います。

たとえば、Linuxではsublimeとvimがあります。または、Windowsではメモ帳++と崇高な機能を使用できます。

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$?

2警告:実際にこのプロセスを直接試したことはありません。いくつかの調整が必要な場合があります。

おすすめ記事