Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' ◎ 引数(選択されたファイルパス・フォルダパス)を、引数毎に改行して、"ソートした後、"クリップボードに送るVBScript
- ' path2clipboardS.vbs, path2Sclipboard.vbs, path2clipboard.vbs
- ' 複数ファイル選択に対応済み
- ' VBScriptのショートカットをSendToに入れておけば右クリック「送る」で実行可能
- ' スクリプトはShift-JISで記述し、改行コードは CRLFとする
- ' クリップボード使用時に、一瞬、コマンドプロンプトが表示されるけど許してね
- ' オリジナル https://ch.nicovideo.jp/imihito/blomaga/ar1109630
- ' 参考 http://blog.livedoor.jp/blackcode/archives/vbscript-how-to-use-arraylist.html?ref=popular_article&id=2777774-255458%27%20ArrayList%E3%81%AE%E4%BD%9C%E6%88%90
- ' 参考 https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.arraylist?redirectedfrom=MSDN&view=net-5.0
- Option Explicit
- Const MSG_TITLE = "クリップボードにコピー"
- Const CLIP = "%windir%\System32\clip.exe"
- ' 異常処理:引数なし
- Dim argsCnt ' As Integer
- argsCnt = Wscript.Arguments.Count - 1
- If argsCnt = -1 Then
- Call MsgBox("ファイルをドロップしてください", vbExclamation, MSG_TITLE)
- Call Wscript.Quit
- End If
- ' Join用に引数を配列化
- ' Dim argsArray() 'As String
- ' ReDim argsArray(argsCnt)
- ' ArrayListの作成
- Dim argsArrayList
- Set argsArrayList = CreateObject("System.Collections.ArrayList")
- Dim i ' As Integer
- With Wscript.Arguments
- For i = 0 To argsCnt
- ' argsArray(i) = .Item(i)
- ' 要素を追加していく
- argsArrayList.Add .Item(i)
- Next ' i
- End With
- ' 要素をソート
- argsArrayList.Sort()
- ' '確認用(機能としては不要)
- ' For Each文で要素を表示
- ' Dim element
- ' For Each element In argsArrayList
- ' Wscript.Echo element
- ' Next
- ' MsgBox "ソート前に一時停止" 'ここまで確認用
- ' 通常の配列に変換
- Dim argsArray : argsArray = argsArrayList.ToArray()
- ' クリップボードに送る(コピーする)文字列作成
- Dim cpText ' As String
- Dim myDel ' As String
- myDel = vbCrLf
- cpText = Join(argsArray, myDel)
- With CreateObject("Wscript.Shell")
- With .Exec(CLIP)
- Call .StdIn.Write(cpText) 'vbCrLf を使わず、WriteLineではなぜか改行が効かない
- End With
- i = 3 ' 再利用
- ' Call .Popup("コピーが完了しました" & vbCrLf & "このウィンドウは" & i & "秒後に閉じます", i, MSG_TITLE, vbInformation)
- End With
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement