WSL から VBS(Visual Basic Script)を実行する
WSL から VBS(Visual Basic Script)を実行する方法を知りたくなったのでそのメモ。
そもそもWindowsで完結するのになぜWSLがいるのか?
そもそも、VBSは定期的に実行したい処理はVBSでしか提供されていない。 このためWindows上で完結させてしまうのが一番いいのだが、Windows自体に明るくなく、 どうすればバッチ処理を行えるのか、定期的に実行する方法は…などなど、調べることがたくさんある。
一方でLinuxについてはSystemdやCronのような仕組みを使って定期的に実行する方法がわかっているし、 最近のWSLではSystemdが動作するようになっているし、WSLからWindows上のCドライブをマウントすれば、 Windows向けのプログラムを実行することもできる。 ということで、Windowsでのバッチ処理だの定期的な処理だのを学ぶコストをできるだけ抑えるには VBSスクリプトをWSLから実行したほうが手っ取り早いのでこんなことをやろうとした。
VBSファイルを実行するためのプログラム
VBSファイル自体は単純なテキストファイルで、エディターを使って簡単に書き換えることができる。
Pythonやシェルスクリプトのように、スクリプトファイルを実行するためのインタープリタがあるはずである。
ということで、ググってみると、VBSファイルを実行するためのプログラムは、cscript.exe
らしい。
また、私が使っているWindows11というか64bit版のWindowsでは、cscript.exe
はC:\Windows\SysWOW64
配下にある。
WSLからWindowsのファイルシステムにアクセスする
WSLからWindows上のファイルシステムにアクセスするためには、/etc/fstab
やmount
コマンドを使って、
Windows上のファイルシステムをマウントする必要がある。
以下のような内容で、/etc/fstab
にエントリを追加、mount
コマンドによる自動マウントを行うことで、
Windows上のCドライブをマウントすることができる。
C: /mnt/c drvfs rw,noatime,uid=1000,gid=1000,case=off,umask=22 0 0
また、WSL上からは/mnt/c
というパス配下に色々ディレクトリが見えるようになっていて、
ここがCドライブのルートディレクトリになる。
WSLからVBSを実行する
あとは簡単で、WSL上のシェルから以下のようなコマンドを実行するだけでVBSファイルを実行することができる。
実行したいスクリプトはWindows上のデスクトップに置いてある、hello.vbs
というファイルとする。
$ /mnt/c/Windows/SysWOW64/cscript.exe /mnt/c/Users/username/Desktop/hello.vbs
これで、WSLからVBSファイルを実行することができる。