VBscriptでカレントディレクトリの変更をするには
2005年6月25日
先日、VBscriptであるプログラムを組んでいた時、スクリプト中でカレントディレクトリを変更することが必要になった。いろいろ調べてみたが、見つからない。手元に『VBscriptポケットリファレンス』という本があるので調べてみたが、ここにも載せられていない。
VBやVBAでできるのにVBscriptでできない(WSHでもできない)ことは色々あり、有名なのはWin32APIが呼び出せないことである。VBscriptやJscriptはHTMLに埋め込むことを前提にして設計されているので、セキュリティー上の問題からそうのようにしているのだろうと思われる。カレントディレクトリの変更も、このあたりの理由で禁止されているのかなと思っていた(カレントディレクトリの変更が大きなセキュリティー上の問題を引き起こすことは考えにくいと感じながらも)。
ところが、今日googleでもう一度調べてみると、こんなページを見つけた。カレントディレクトリの変更は、
Set shell = WScript.CreateObject("WScript.Shell")
shell.CurrentDirectory = ".\sub"
で良い。この機能は、v5.6以降でないと使えないらしい。『VBscriptポケットリファレンス』の記述に、『本書執筆現在(1999年4月)、もっとも新しいVBscriptのバージョンは5.0です。』とあった。どおりで、カレントディレクトリの変更が、この本で見つけられなかったわけである。
この記事を書いている途中でも、WSH関連のよいwebページを見つけた。以前はVBscriptを書く際にWSHのどの機能をどのように呼び出せば目的のことが達せられるのかなかなか見つけられないためにVBscriptを使用することをためらうことがままあったが、こういったページを参考にすればすんなりプログラミングできるようになるかもしれない。
VBやVBAでできるのにVBscriptでできない(WSHでもできない)ことは色々あり、有名なのはWin32APIが呼び出せないことである。VBscriptやJscriptはHTMLに埋め込むことを前提にして設計されているので、セキュリティー上の問題からそうのようにしているのだろうと思われる。カレントディレクトリの変更も、このあたりの理由で禁止されているのかなと思っていた(カレントディレクトリの変更が大きなセキュリティー上の問題を引き起こすことは考えにくいと感じながらも)。
ところが、今日googleでもう一度調べてみると、こんなページを見つけた。カレントディレクトリの変更は、
Set shell = WScript.CreateObject("WScript.Shell")
shell.CurrentDirectory = ".\sub"
で良い。この機能は、v5.6以降でないと使えないらしい。『VBscriptポケットリファレンス』の記述に、『本書執筆現在(1999年4月)、もっとも新しいVBscriptのバージョンは5.0です。』とあった。どおりで、カレントディレクトリの変更が、この本で見つけられなかったわけである。
この記事を書いている途中でも、WSH関連のよいwebページを見つけた。以前はVBscriptを書く際にWSHのどの機能をどのように呼び出せば目的のことが達せられるのかなかなか見つけられないためにVBscriptを使用することをためらうことがままあったが、こういったページを参考にすればすんなりプログラミングできるようになるかもしれない。