Jump to content

Ordner finden / aufrufen mit Wildcard


Recommended Posts

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 to post

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 to post

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 to post
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 to post
  • 2 weeks later...
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 to post

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

 

  • Like 1
Link to post
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 to post
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
        }

 

Edited by BOfH_666
Link to post

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)

 

 

Edited by tuduc
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...