もともとのやりたいことは実行したスクリプトの相対パスでファイルを指定することです。
(スクリプトは複数の実行環境で実行するので絶対パスでは書きたくありません)
ただし、ダブルクリックでも起動するし、別ファイルの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を変更する方法
どちらでもかまいません。(両方だとなおうれしいです)
よろしくお願いします。
No.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/
おお、すごいです。
へんな苦労をしていたことが馬鹿みたいです。
まだまだ知識や経験が足りないようですね…。
質問自体以外にも意図やスキルを汲み取って
アドバイスをしていただき参考になりました。
大変助かりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- AJAX RPA(PowerAutomate)の実装について 1 2023/07/31 13:46
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- その他(パソコン・スマホ・電化製品) CMD等でPC操作(excel開く等)を自動化させたい 1 2023/03/15 09:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ディスクの空き容量を求める(W...
-
Perlのライセンス
-
複数行に渡る文字列の置換
-
VBScriptでCurrentDirectoryを...
-
頭にperlとつけないと実行できない
-
Windows系OSのPerlスクリプト...
-
PerlでUNIXのコマンドとパスワ...
-
[ASP]条件によってインクルード...
-
vbs: オブジェクトがコレクショ...
-
crontab での実行結果が違う
-
ホームページ作成でCGI、VBスク...
-
powershellで関数名を変更する...
-
VBAで別モジュールへの変数の受...
-
VBAで旧字体を異字体に一括で変...
-
例外処理のフローチャートの記...
-
VBAで「メモリが不足しています」
-
VBA This Workbookモジュール...
-
LCD ディスプレイを Raspberry ...
-
オフコン(富士通Kシリーズ)...
-
ユーザー定義関数に#NAME?が返...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Cからシェルを起動し返り値をハ...
-
powershellで関数名を変更する...
-
UWSCのスクリプトにラグが発生...
-
"JScript"が見つかりません!
-
[ASP]条件によってインクルード...
-
VBSで自動ログインについて
-
VBSを利用して、IEのタブを自動...
-
VBScriptでCurrentDirectoryを...
-
Perlのライセンス
-
vbs: オブジェクトがコレクショ...
-
Perlスクリプトで文字化けして...
-
シェルでsyntax errorがでてしまう
-
awkの処理速度を改善したい
-
ADサーバにおけるログインID,PC...
-
cygwinでcshが認識されず困って...
-
ディスクの空き容量を求める(W...
-
crontab での実行結果が違う
-
ホームページ作成でCGI、VBスク...
-
perlスクリプトのブラウザURLか...
-
perl起動方法
おすすめ情報