Erdbeerenesser 10 Geschrieben 15. November 2006 Melden Teilen Geschrieben 15. November 2006 Hallo, ich habe das Script von thorgood zur aut. Erstellung von Usern umgebaut. Ich möchte eine txt auslesen. In dieser stehen Daten eines Bundeslandes in der Form: Kreis__________________Gemeinde______________Gemarkung ALTENBURGER LAND________ALTENBURG, STADT________ZSCHAIGA ALTENBURGER LAND________ALTENBURG, STADT________ZSCHECHWITZ ALTENBURGER LAND________ALTENBURG, STADT________ZSCHERNITZSCH ALTENBURGER LAND________ALTKIRCHEN______________ALTKIRCHEN ALTENBURGER LAND________ALTKIRCHEN______________GIMMEL ALTENBURGER LAND________ALTKIRCHEN______________GÖDISSA ALTENBURGER LAND________ALTKIRCHEN______________GÖLDSCHEN Anhand dieser Daten in der 'ordner.txt' sollen im Windows-Explorer in der 1. Ebene Kreis-Ordner, darunter Gemeinde-Ordner, darunter Gemarkungs-Ordner erstellt werden. Das Script funktioniert bereits, nur kommt es leider nicht mit den Leerzeichen klar. Die vbs-Datei liest die txt aus und ruft die Batch 'ordner.cmd' auf. Als Parameter werden natürlich Kreis, Gemeinde und Gemarkung übergeben. Leider kommen die Daten bei der Batch zerteilt an, woran das Leerzeichen schuld ist. Beispiel für Zeile 1: %1 Altenburger %2 Land %3 Altenburg %4 Stadt %5 ZSCHAIGA Eigentlich hatte ich folgendes Ergebnis erwartet: %1 Altenburger Land %2 Altenburg, Stadt %3 ZSCHAIGA Im Ergebnis werden die Ordner natürlich auch in der falschen Form erstellt. Frage: Wie kann ich die Parameterübergabe vbs-Script an Batch-Datei so steuern, das die Werte nicht getrennt werden? Anbei das Script: Dim fso, f, Zeile Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile ("test.txt",1,0) Do while not f.AtEndOfLine Zeile = f.readLine 'Feld = split(Zeile,";") 'Kreis = Feld(0) Gemeinde = Feld(1) Gemarkung = Feld(2) Call OrdnerAnlegen(Kreis,Gemeinde,Gemarkung) Loop f.Close Wscript.Quit(0) Sub OrdnerAnlegen (Kreis,Gemeinde,Gemarkung) Dim WshShell, ret Set WshShell = WScript.CreateObject("WScript.Shell") ret = WshShell.Run ("Ordner.cmd " & Kreis & Gemeinde & Gemarkung) End Sub ...und die Batch-Datei Ordner.cmd: :Kreis if exist D:\Ordner\%1 goto Gemeinde md D:\Ordner\%1 :Gemeinde if exist D:\Ordner\%1\%2 goto Gemarkung md D:\Ordner\%1\%2 :Gemarkung if exist D:\Ordner\%1\%2\%3 goto Ende md D:\Ordner\%1\%2\%3 :Ende pause Zitieren Link zu diesem Kommentar
ReinerS 10 Geschrieben 15. November 2006 Melden Teilen Geschrieben 15. November 2006 Hallo Erdbeerenesser, geht es nicht, wenn Du aus: ret = WshShell.Run ("Ordner.cmd " & Kreis & Gemeinde & Gemarkung) das: ret = WshShell.Run ("Ordner.cmd " & "Kreis" & "Gemeinde" & "Gemarkung") machst? Sonst kannst Du Dir auch die "CreateFolder()" Methode aus dem FileSystemObject anschauen, dann kannst Du auf den zusätzlichen batch verzichten. lg Reiner Zitieren Link zu diesem Kommentar
Erdbeerenesser 10 Geschrieben 15. November 2006 Autor Melden Teilen Geschrieben 15. November 2006 Hallo, nein, mit den Hochkommas funktioniert das nicht. Dann nimmt er die Werte in den Hochkommas als Strings und nicht als Variablen. Somit entsteht ein Ordner "KreisGemeindeGemarkung" :) Danke für den Tip, werde ich mir ansehen... 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.