dポイントプレゼントキャンペーン実施中!

もともとのやりたいことは実行したスクリプトの相対パスでファイルを指定することです。
(スクリプトは複数の実行環境で実行するので絶対パスでは書きたくありません)

ただし、ダブルクリックでも起動するし、別ファイルのD&Dでも起動するので
必然的に起動時のCurrentDirectoryが変化してしまいます。

これを固定化したいのです。
いまは固定化というか起動後に目的のディレクトリに移動することで実現させようと思っています。

とりあえず以下のコードを書きました。

Dim CurrentDirectory
CurrentDirectory = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) -21)
Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd CD " + CurrentDirectory, 0, FALSE
Set oShell = Nothing

(2行目の「-21」はスクリプト名の長さを引いているだけです。あまり気にしないでください)

が、これだと見た目はうまくいくのですがcmdプロセスが残ってしまい起動するたびに増えていきます。

それにそもそもスマートではない気がします

質問は以下です。
・上記のコードを修正してcmdプロセスを残らないようにする方法
・上記の方法以外でCurrentDirectoryを変更する方法

どちらでもかまいません。(両方だとなおうれしいです)
よろしくお願いします。

A 回答 (1件)

こんにちは。



提示されたスクリプト中の
oShell.run "cmd CD " + CurrentDirectory, 0, FALSE

oShell.CurrentDirectory = CurrentDirectory
に変更すれば、やりたい事が実現出来ます。

参考URL
http://msdn.microsoft.com/ja-jp/library/cc364350 …

後、スクリプトのカレントフォルダ取得には以下の方法をよく使ってました。
path = Split(WScript.ScriptFullName,Wscript.ScriptName)
CurrentDirectory = path(0)

また、以下のマイクロソフトのサイトからWindows Script 5.6 ドキュメントを
ダウンロード出来ますので、手元に置いておくと便利です。
http://www.microsoft.com/japan/msdn/scripting/
    • good
    • 0
この回答へのお礼

おお、すごいです。
へんな苦労をしていたことが馬鹿みたいです。
まだまだ知識や経験が足りないようですね…。

質問自体以外にも意図やスキルを汲み取って
アドバイスをしていただき参考になりました。
大変助かりました。ありがとうございました。

お礼日時:2009/04/13 11:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!