tuduc 0 Geschrieben 9. Februar 2021 Melden Teilen Geschrieben 9. Februar 2021 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 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 9. Februar 2021 Melden Teilen Geschrieben 9. Februar 2021 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. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 9. Februar 2021 Melden Teilen Geschrieben 9. Februar 2021 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 Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 9. Februar 2021 Melden Teilen Geschrieben 9. Februar 2021 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... Zitieren Link zu diesem Kommentar
tuduc 0 Geschrieben 23. Februar 2021 Autor Melden Teilen Geschrieben 23. Februar 2021 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. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 23. Februar 2021 Melden Teilen Geschrieben 23. Februar 2021 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 1 Zitieren Link zu diesem Kommentar
tuduc 0 Geschrieben 23. Februar 2021 Autor Melden Teilen Geschrieben 23. Februar 2021 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". Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 23. Februar 2021 Melden Teilen Geschrieben 23. Februar 2021 (bearbeitet) 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 23. Februar 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 23. Februar 2021 Melden Teilen Geschrieben 23. Februar 2021 vor 7 Stunden schrieb tuduc: In VBA geht das mit "dir". Mag sein. In VBS gibt es kein "dir", da gibt es nur das FSO. Und das ist "zickig". 1 Zitieren Link zu diesem Kommentar
tuduc 0 Geschrieben 24. Februar 2021 Autor Melden Teilen Geschrieben 24. Februar 2021 (bearbeitet) 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 24. Februar 2021 von tuduc Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 24. Februar 2021 Melden Teilen Geschrieben 24. Februar 2021 Formatierst Du Deinen Code bitte als Code? Danke schon mal im Voraus. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.