ここから本文です

VBScriptで「WScript.Arguments」があるとGetFolder(".")できない。

Prometheusさん

2017/4/1813:49:19

VBScriptで「WScript.Arguments」があるとGetFolder(".")できない。

so = CreateObject("Scripting.FileSystemObject")
gf = so.GetFolder(".")

だけでしたら、「gf」には、プログラムファイル(「~.vbs」ファイル)自身が存在するフォルダを取得できます。

しかし、この後ろに、

Set wa = WScript.Arguments

の1行を追加すると、「gf」は、「C:\Windows\System32」フォルダになってしまいます。

「WScript.Arguments」があっても、プログラムファイル(「~.vbs」ファイル)自身が存在するフォルダを取得する方法はあるでしょうか?

閲覧数:
137
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

uso8megaさん

2017/4/1816:16:53

まず、事象は正確に表現するよう心掛けて下さい。
×GetFolder(".")できない
○GetFolder(".")の返り値が質問者の想定外

それで、ウチのWin10.0.14393では再現しません。
・CScript.exeから起動
・WScript.exeから起動
・エクスプローラーからダブルクリック
全て基本的にカレントディレクトリが返って来ます。
但し、
・C:\Windows\System32の中のファイルをドラッグ
してきてドロップ
した場合には、確かに
>カレントディレクトリが「C:\Windows\System32」に
なりましたが。起動方法の問題?!

Set so = CreateObject("Scripting.FileSystemObject")
Set gf = so.GetFolder(".")
WScript.Echo gf.Path
Set wa = WScript.Arguments
WScript.Echo gf.Path
WScript.Echo so.GetFolder(".").Path
Set wa = Nothing
Set gf = Nothing
Set so = Nothing

>>プログラムファイル自身が存在するフォルダを取得
原因は不確定ですが、解決したいだけなら↓
http://qiita.com/asterisk9101/items/54cdcedb9ef60ea0bb21

  • 質問者

    Prometheusさん

    2017/4/1816:28:03

    ありがとうございます!

    間違いなく、欲しい結果が得られています。

    「gf」と「gf.Path」

    論理的には理解できていませんが、これでやっと、作りたいプログラムが組めそうです。

    それから、ご指摘、ありがとうございました。

    これから、気をつけます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

tie********さん

2017/4/1815:49:09

>プログラムファイル(「~.vbs」ファイル)自身が
>存在するフォルダを取得する方法

vbsファイルに次の1行だけ記述して、
vbsファイルを左ダブルクリックしてみてください。

msgbox CreateObject("WScript.Shell").CurrentDirectory

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる