Per TC auf Win7 Bibliotheken zugreifen / Wunsch für TC

German support forum

Moderators: Hacker, Stefan2, white

fuxi
Junior Member
Junior Member
Posts: 13
Joined: 2009-11-10, 05:40 UTC

scriptWFX

Post by *fuxi »

hallo ricobautsch,

ich habe die v1.2 installiert und eine frage:

ich lasse mir mehrere folders (zb. c:\pfad1, d:\pfad2, e:\pfad3) in einem verzeichnisbaum anzeigen, dh. ich sehe alle unterverzeichnisse dieser 3 pfade. wie kann ich den original pfad auf das jeweilige unterverzeichnis hinterlegen? zb. \folder_aus_pfad1 --> c:\pfad1\folder_aus_pfad1
sodaß ich beim öffnen des folders auch auf den richtigen pfad komme.

beim öffnen eines folders gibt mir die funktion FsFindFiles nur den gemappten pfad zurück, allerdings nicht den vollen, lokalen.

ich habe mir die neuen funktionen angesehen (FsLinksToLocalFiles und FsGetLocalName) aber die betreffen wohl nur dateien, keine unterverzeichnisse.

danke
ricobautsch
Member
Member
Posts: 103
Joined: 2005-06-21, 00:42 UTC

Post by *ricobautsch »

hallo fuxi,

für das Mapping eines Plugin-Ordners zum realen Ordner muss man als Plugin-Autor im Code natürlich selbst sorgen.

In diesem Fall bietet sich dafür zum Beispiel ein Dictionary an.

Nachfolgend habe ich ein kleines funktionsfähiges Beispielscript geschrieben.
Einfach in der dritten Codezeile das PathArray entsprechend anpassen, dann sollte das Listing und die Anzeige von Dateien mit F3 bereits funktionieren.

Code: Select all

'*** Declarations
Set fso = CreateObject("Scripting.FileSystemObject")
Set mapping = CreateObject("Scripting.Dictionary")

PathArray = Array("d:\Pfad1", "d:\Pfad2")

class MappingItem
  Public PluginPath
  Public RealPath
  Public IsFolder
End class

CreateMapping

'*** Plugin functions
Function FsFindFiles(ByVal Path)
  If Path = "\" Then
    CreateMapping
    For Each Path In PathArray
      CreateListing Path
    Next
    FsFindFiles = True
  Else
    CreateListing RemoteNameToLocalName(Path) 
    FsFindFiles = True
  End If
End Function

Function FsLinksToLocalFiles
  FsLinksToLocalFiles = True
End Function

Function FsGetLocalName(ByRef RemoteName, ByVal maxlen)
  RemoteName = RemoteNameToLocalName(RemoteName)
  FsGetLocalName = True
End Function

'*** Helper functions

Sub AddMapping(PluginPath, RealPath, IsFolder)
  Set item = new MappingItem
  item.PluginPath = PluginPath
  item.RealPath = RealPath
  item.IsFolder = IsFolder	
  mapping.Add PluginPath, item
End Sub

Sub CreateMapping
  mapping.RemoveAll
  For Each Path In PathArray
    If fso.FolderExists(Path) Then
      Set fldr = fso.GetFolder(Path)
  
      For Each f In fldr.Subfolders
        AddMapping f.Name, Path & "\" & f.Name, True
      Next
      
      For Each f In fldr.Files
        AddMapping f.Name, Path & "\" & f.Name, False
      Next
    End If
  Next
End Sub

Sub CreateListing(Path)
  If fso.FolderExists(Path) Then
    Set fldr = fso.GetFolder(Path)

    For Each f In fldr.Subfolders
      Set File = ScriptFiles.Add(f.Name)
      With File
        .Attributes = f.Attributes
        .LastWriteTime = f.DateLastModified
      End With        
    Next
    
    For Each f In fldr.Files
      Set File = ScriptFiles.Add(f.Name)
      With File
        .Attributes = f.Attributes
        .Size = f.Size
        .LastWriteTime = f.DateLastModified
      End With        
    Next
  End If
End Sub

Function RemoteNameToLocalName(RemoteName)
  If Mid(RemoteName, 1, 1) = "\" Then
    RemoteName = Mid(RemoteName, 2)
  End If

  Pos = InStr(RemoteName, "\")
  If Pos = 0 Then
    Set item = mapping.Item(RemoteName)
    RemoteNameToLocalName = item.RealPath
  else
    Set item = mapping.Item(Mid(RemoteName, 1, Pos-1))
    RemoteNameToLocalName = item.RealPath & Mid(RemoteName, Pos)
  End If
End Function
Post Reply