忍者ブログ

ドラッグドロップ全ファイルループモジュール

2023年12月18日
VBScriptは、Windowos上で動作するのもあって、
ドラッグドロップで入力ファイルをしていできるようにすると使い勝手が良い。


その他にも、引数を指定しない場合はVBScriptがあるフォルダの全ファイルを対象にしたり、
フォルダを指定した場合は、そのフォルダ内の全ファイルを対象にできると便利。

ってなわけで、作ってみることにした。


でも今回はいつもと違う!


Chat GPT4を搭載したBing AI を利用して、作ってみることにした!





Bingに対して入力したプロンプトは以下の4行。

ドラッグドロップで全オブジェクトに対して以下の処理を行うVBScriptのソースコードを生成して。
・フォルダをドロップした場合はドロップした各フォルダ内の全csvファイルを対象にメイン処理を行う
・ファイルをドロップした場合は各ファイルを対象にメイン処理を行う
・指定なしの場合は、そのスクリプトのあるフォルダ内の全csvファイルを対象にメイン処理を行う



気を付けるべきは、
Bingは、文脈を考慮して返事をすること。

一旦~~~のようなプログラムを作成して!と依頼したあとに
別の依頼をしても、最初と同じ答えが返ってきたりする。


なので、新しいお願いをするときは、
「新しいトピック」をクリックすること。


プロンプトを変えて何回か試したところ、
理想的な回答が返ってきたので投稿。

やっているうちにあることに気付いた。。。
それについてはまた次回!!

てなわけで、Bingが返した回答は以下の通り。


## Bing
こんにちは、Bingです。VBScriptでドラッグドロップを使用して、指定された処理を行うソースコードを生成することができます。以下のコードを参考にしてください。
Option Explicit
Dim objFSO, objArgs, strFolder, strFile, strPath, strExtension
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then
    strFolder = objFSO.GetParentFolderName(WScript.ScriptFullName)
Else
    For Each strPath In objArgs
        If objFSO.FolderExists(strPath) Then
            ProcessFolder strPath
        ElseIf objFSO.FileExists(strPath) Then
            ProcessFile strPath
        End If
    Next
End If
Sub ProcessFolder(strFolderPath)
    Dim objFolder, objFile, colFiles
    Set objFolder = objFSO.GetFolder(strFolderPath)
    Set colFiles = objFolder.Files
    For Each objFile In colFiles
        ProcessFile objFile.Path
    Next
    Set colFiles = Nothing
    Set objFolder = Nothing
End Sub
Sub ProcessFile(strFilePath)
    strExtension = objFSO.GetExtensionName(strFilePath)
    If LCase(strExtension) = "csv" Then
        ' Do something with the file
    End If
End Sub
上記のコードは、フォルダまたはファイルをドラッグアンドドロップした場合に、指定された処理を行うVBScriptの例です。フォルダをドロップした場合は、そのフォルダ内の全csvファイルを処理します。ファイルをドロップした場合は、そのファイルを処理します。指定がない場合は、スクリプトのあるフォルダ内の全csvファイルを処理します。このコードを参考に、必要に応じてカスタマイズしてください。

PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字