/
select_open_folder.vbs
62 lines (52 loc) · 1.46 KB
/
select_open_folder.vbs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
' フォルダ選択ダイアログを開いて、選択されたフォルダパスを返す VBScript
' 結果文字列をクリップボードに入れてから終了する。
Option Explicit
On Error Resume Next
Dim oParam, oShell, oFolder, s, dirname, objIe
Set oParam = WScript.Arguments
If oParam.Length > 0 Then
s = oParam(0)
Else
s = "フォルダを選択してください"
End If
dirname = "::"
Set oShell = WScript.CreateObject("Shell.Application")
If Err.Number = 0 Then
Set oFolder = oShell.BrowseForFolder(0, s, 0)
If Not oFolder Is Nothing Then
' フォルダ選択がされた場合
dirname = oFolder.Items.Item.Path
Else
' キャンセルされた場合
dirname = "::cancel"
End If
Else
' エラーが発生した場合
' WScript.Echo "エラー:" & Err.Description
dirname = "::error"
End If
' 結果を出力
' WScript.Echo dirname
' 結果をクリップボードにコピー
Const OLECMDID_COPY = 12
Const OLECMDID_SELECTALL = 17
Const OLECMDEXECOPT_DODEFAULT = 0
Set objIe = CreateObject("InternetExplorer.Application")
' objIe.Visible = true
objIe.Navigate "about:blank"
Do While objIe.Busy
WScript.Sleep 100
Loop
objIe.Document.Body.InnerText = dirname
objIe.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT
objIe.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
Do While objIe.Busy
WScript.Sleep 100
Loop
objIe.Quit
Set objIe = Nothing
Set dirname = Nothing
Set s = Nothing
Set oFolder = Nothing
Set oShell = Nothing
Set oParam = Nothing