Jump to content

Ordner finden / aufrufen mit Wildcard


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo in die Runde,

 

es geht um folgendes.

In einem Verzeichnis liegen Ordner, die alle mit 6 Ziffern anfangen.

Diese 6 Ziffern sind eindeutig, ein bestimmter Ordner ist über diese 6 Ziffern eindeutig zu identifizieren.

Leider folgt aber auf diese 6 Ziffer manchmal noch ein Textteil.

123456

123457_Max

123458_Peter

123459

...

Ich habe ein VBS Script, mit dem ich nach Eingabe der 6 Ziffern den Ordner im Explorer angezeigt bekomme (geöffnet, so daß ich Zugriff auf die darin enthaltenen Dateien und Ordner habe).

Die entscheidende Zeilen in dem Script sind.

"Set WSHShell = WScript.CreateObject("WScript.Shell") 
    WshShell.run ("explorer.exe " & jhx_path_all)"

jhx_path_all hat z.B. den Inhalt "\\SERVERNAME\ordner_2010\monat_05\Projekte_2034xx\203456", wird abhängig von den eingegebenen 6 Ziffern zusammengesetzt. 

Dieses Script funktioniert natürlich nur, wenn der finale Ordner nur aus den 6 Ziffern besteht.

Wenn aber, wie oben z.B. noch "_Max" oder "_Peter" dahintersteht, dann eben nicht.

Genau für diesen Fall hoffe ich hier auf eine Lösung.

In VBA(Excel) habe ich das gelöst, in VBS komme ich nicht weiter:

 

VG

Link zu diesem Kommentar

Erstmal hallo und Willkommen im MCSEboard.

 

Ohne irgendeine Ahnung von VBS zu haben ... Du wirst wohl erstmal den konkreten Ordner-Namen im Script ermitteln müssen, bevor Du ihn an den Explorer verfüttern kannst.

 

Wäre Powershell eine Option?  ;-) 

 

Es wäre hilfreich, wenn Du Code postest, diesen auch als Code zu formatieren.

 

Danke schonmal im Voraus.

 

 

Link zu diesem Kommentar

Moin,

 

vor 1 Stunde schrieb tuduc:

In VBA(Excel) habe ich das gelöst, in VBS komme ich nicht weiter:

wie hast du es denn in VBA gelöst? So unterschiedlich sind die Dialekte ja nicht. Und was hast du mit welchem Ergebnis in VBS versucht?

 

Die Methode "FolderExists" und die Collection "Folders" sind dir bekannt?

 

Gruß, Nils

 

Link zu diesem Kommentar
vor 4 Stunden schrieb tuduc:

Die entscheidende Zeilen in dem Script sind.

"Set WSHShell = WScript.CreateObject("WScript.Shell") 
    WshShell.run ("explorer.exe " & jhx_path_all)"

Nein. Die entscheidenden Zeilen wären die, die jhx_path_all zusammenbauen :-)

Wenn es _unbedingt_ VBS sein soll, kommst Du um ein FileSystemObject nicht herum. In Powershell wäre das fast ein Einzeiler...

Link zu diesem Kommentar
  • 2 Wochen später...
Am 9.2.2021 um 18:24 schrieb daabm:

Nein. Die entscheidenden Zeilen wären die, die jhx_path_all zusammenbauen :-)

Wenn es _unbedingt_ VBS sein soll, kommst Du um ein FileSystemObject nicht herum. In Powershell wäre das fast ein Einzeiler...

Hallo Martin, ich muß Dir zum Teil widersprechen. jhx_path_all beinhaltet eine Wildcard am Ende.

Also benötige ich entweder eine Alternative zu den meiner Meinung nach entscheidenden Zeilen, die mit Wildcards umgehen kann.

Oder ich benötige vorab einen Befehl der unter Verwendung von Wildcards den Ordner "nur" findet, den ganzen Namen dann an die oben genannten Zeilen übergibt. 

Link zu diesem Kommentar

Moin,

 

dann wäre es sinnvoll, wenn du uns auch das schreibst, was Sache ist. Diese beiden Aussagen hier widersprechen sich nämlich:

Am 9.2.2021 um 13:31 schrieb tuduc:

jhx_path_all hat z.B. den Inhalt "\\SERVERNAME\ordner_2010\monat_05\Projekte_2034xx\203456", wird abhängig von den eingegebenen 6 Ziffern zusammengesetzt.

 

vor einer Stunde schrieb tuduc:

jhx_path_all beinhaltet eine Wildcard am Ende

Eine dieser Aussagen kann also nicht stimmen.

 

Am Ende bleibt es aber dabei: Wenn du das per VBS lösen willst, dann musst du auch die Methoden einsetzen, die VBS dafür hat. Welche das sind, habe ich oben angegeben.

 

Gruß, Nils

 

Link zu diesem Kommentar
vor einer Stunde schrieb NilsK:

Moin,

 

dann wäre es sinnvoll, wenn du uns auch das schreibst, was Sache ist. Diese beiden Aussagen hier widersprechen sich nämlich:

 

Eine dieser Aussagen kann also nicht stimmen.

 

Am Ende bleibt es aber dabei: Wenn du das per VBS lösen willst, dann musst du auch die Methoden einsetzen, die VBS dafür hat. Welche das sind, habe ich oben angegeben.

 

Gruß, Nils

 

Hallo Nils,

 

aktuell mit VBS endet der Pfad auf 6 Zahlen, damit erreiche ich aber nicht die Ordner, an die die Kollegen hinter die Projektnummer noch den Kundennamen setzen.

Deshalb suche ich die Lösung mit Wildcards.

In VBA geht das mit "dir".

Link zu diesem Kommentar
vor 9 Minuten schrieb tuduc:

Deshalb suche ich die Lösung mit Wildcards.

Wie wäre es stattdessen, wenn Du alle Ordner ermittelst und dann den passenden mit einem Vergleich des Teilstrings ermittelst? Eventuell gibt es ja mit VBS nicht die Möglichkeit, Wildcards auf diese Weise zu nutzen.  ;-) 

 

Edit:

In Powershell wär das dann ungefähr sowas hier:

$FolderNameStart = Read-Host -Prompt 'Bitte die ersten 6 Ziffern des Ordnernamens eingeben'

Get-ChildItem -Path '\\SERVERNAME\ordner_2010\monat_05\Projekte_2034xx' -Directory |
    Where-Object {$_.Name -match "^$FolderNameStart"} |
        ForEach-Object {
            explorer.exe $_.FullName
        }

 

bearbeitet von BOfH_666
Link zu diesem Kommentar

Hallo an alle,

 

danke für Eure Ideen.

Ich habe es jetzt geschafft, siehe unten.

Funktioniert, weil der Teil der den Unterschied macht immer die ersten 6 Zeichen des Ordnernamens sind

Wird als prj_n in Dialogbox abgefragt, der Wert für prj_fxx wird in Abhängigkeit von prj_n zugewiesen

 

VG 

 

For Each subfolder in fso.GetFolder(prj_fxx).SubFolders
    prj_f = subfolder.name
    prj_f6 = left(prj_f, 6)
    if prj_f6 = prj_n Then
        prj_path = prj_fxx &"\" & prj_f
        Exit For
    end if
Next
Set WSHShell = WScript.CreateObject("WScript.Shell") 
WshShell.run ("explorer.exe " & prj_path)

 

 

bearbeitet von tuduc
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...