Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBS- Ordner automatisch erstellen und datei reinkopieren

Frage Entwicklung VB for Applications

Mitglied: lionne

lionne (Level 1) - Jetzt verbinden

08.03.2011, aktualisiert 18.10.2012, 12185 Aufrufe, 30 Kommentare

Hallo Zusammen,

ich bin neu hier und neu in der Welt der Programmierung.

Ich habe folgenden Beitrag auf der Seite gefunden; http://www.administrator.de/index.php?content=154916
Mein Problem ist fast gleich aber bei mir soll der Odner während des kopiervorgangs erstellt werden:

Beispiel:
Ich möchte alle Dateien.txt von C:\Temp nach D:\Ablage kopieren

Falls der kopiervorgang z.B. heute lauf muss folgende Odner erstellt werden und alle txt Dateien von C nach D kopieren: D:\Ablage\Jahr\Monat\Tag
Wobei Jahr immer das aktuelle Jahr ist d.h. D:\Ablage\2011\03\08

Falls der Unterordner D:\Ablage\Jahr\Monat\ schon vorhanden ist, muss nur der unterverzeichnis \Tag erstellt werden.

Der unterverzeichniss Tag muss immer gleich der Tag, an dem das Programm gestartet wird.


Vielen Dank im Voraus für ein Beispiel
Lionne
30 Antworten
Mitglied: bastla
08.03.2011 um 17:18 Uhr
Hallo lionne und willkommen im Forum!

Das ginge etwa so:
01.
QuellOrdner = "C:\TEMP" 
02.
QuellTyp = "txt" 
03.
ZielOrdner = "D:\Ablage\" & Year(Date) & "\" & Right("0" & Month(Date), 2) & "\" & Right("0" & Day(Date), 2) 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
 
06.
'Zielordner (bei Bedarf) erstellen 
07.
Ziel = Split(ZielOrdner, "\") 'Teilpfade durch Zerlegung anhand der "\" bilden 
08.
ZielPfad = Ziel(0) 'Start mit Laufwerk 
09.
For i = 1 To UBound(Ziel) 
10.
    ZielPfad = ZielPfad & "\" & Ziel(i) 'ZielPfad um jeweiligen Teilpfad verlängern 
11.
    If Not fso.folderExists(ZielPfad) Then fso.CreateFolder(ZielPfad) 'und bei Bedarf erstellen 
12.
Next 
13.
'Dateien kopieren 
14.
For Each Datei In fso.GetFolder(QuellOrdner).Files 'alle Dateien des QuellOrdners durchgehen 
15.
    If LCase(fso.GetExtensionName(Datei.Name)) = LCase(QuellTyp) Then 'Datei des gesuchten Typs? 
16.
        If Not fso.FileExists(ZielOrdner & "\" & Datei.Name) Then 'gleichnamige Datei bereits vorhanden? 
17.
    	    Datei.Copy ZielOrdner & "\" 'Zielangabe mit abschließendem "\" = Ordner 
18.
        Else 
19.
            'Namenskollision - was tun? 
20.
        End If 
21.
    End If 
22.
Next
Gibt es übrigens einen speziellen Grund für die Verwendung von VBS? In Batch würde (bis auf die Frage der Namenskollision) dafür eine Zeile der Art
for /f "tokens=1-3 delims=." %%a in ("%date%") do xcopy C:\TEMP\*.txt D:\Ablage\%%c\%%b\%%a\
genügen ...

Grüße
bastla
Bitte warten ..
Mitglied: lionne
08.03.2011 um 17:52 Uhr
Hallo bastla,

Tausend Dank für dein Beispiel. Es funktioniert sehr gut.

VBS ist hier bei uns vorgabe. Mein Mentor will es so haben.

Ich werde jetzt versuchen das Skript zu verstehen.
Bitte warten ..
Mitglied: lionne
08.03.2011 um 18:20 Uhr
Hallo bastla,

Bitte noch eine Frage:

Ich bekomme mehreren textdateien mit Dateiname wie z.B. Textdatei_20110308.txt ich soll die Dateien von C:\Temp löschen und nach D:\Ablage\Jahr\Monat\Tag speichern bzw. Kopieren. Wobei das Jahr, der Monat und der Tag aus der Dateiname gelesen wird. Im mein Beipsiel D:\Ablage\2011\03\08

Hast du auch ein Beispiel für mich?

Vielen Dank im Voraus
Lionne
Bitte warten ..
Mitglied: Biber
08.03.2011 um 18:45 Uhr
Moin lionne,

willkommen im Forum.
Hast du auch ein Beispiel für mich?
Sicher lässt sich bastla da nicht lange bitten.
Und es gibt auch noch so 5 bis 8 andere, die mich vermutlich noch beim Kommentarschreiben überholen werden.

Dennoch: Magst du nicht erstmal die Teilstringzerlegung/Zusammenbraterei wie in bastlas Zeile 3 angedeutet nachlesen/nachturnen?
Bzw. für die neue Variante anpassen?

Das wäre der ideale nützliche und ungefährliche Einstieg in die wundersame Welt der VBS-Schroterei.

Wenn wir dir vielleicht einen halben Tag Vorsprung geben und du fragst nur nach, falls du nicht mehr weiterweisst?
Und postest ansonsten dein selbst gefundenes Lehrstück?

Nur ein Vorschlag...

Grüße
Biber
Bitte warten ..
Mitglied: bastla
08.03.2011 um 19:48 Uhr
Wenn wir dir vielleicht einen halben Tag Vorsprung geben und du fragst nur nach, falls du nicht mehr weiterweisst?
... unter diesen Voraussetzungen spendiere ich nur noch ein fragmentarisches
fso.GetBaseName(Datei.Name)
- und sage zu den Rechts-Links-Kombinationen gar nix ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
08.03.2011 um 20:45 Uhr
Zitat von bastla:
- und sage zu den Rechts-Links-Kombinationen gar nix ...
und die Zwischendrinn-Kombination nicht zu vergessen, sage ich auch mal nix

Gruß Dieter
Bitte warten ..
Mitglied: bastla
08.03.2011 um 20:50 Uhr
Hallo Dieter!

Rechts-Links würde mir schon genügen (das Datum steht ja lt Beispiel am Ende des Namens) ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
08.03.2011 um 21:09 Uhr
Hallo bastla!

aber lionne will doch Sub-Ordner ala "..\JJJJ\MM\TT" ("..\2011\03\08" aus Textdatei_20110308.txt) oder habe ich den Kommentar von 18:20:21 falsch verstanden?

Gruß Dieter
Bitte warten ..
Mitglied: bastla
08.03.2011 um 21:15 Uhr
Hallo Dieter!

Da wären dann zB für das Jahr aus dem String "Textdatei_20110308" die ersten 4 Zeichen der letzten 8 Zeichen zu verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
08.03.2011 um 21:19 Uhr
Hallo bastla!

Zitat von bastla:
Da wären dann zB für das Jahr aus dem String "Textdatei_20110308" die ersten 4 Zeichen der letzten 8 Zeichen zu verwenden ...
Jepp, und der Monat vielleicht 5 und 6 (zwischendrinn)?

Gruß Dieter
Bitte warten ..
Mitglied: bastla
08.03.2011 um 21:23 Uhr
Hallo Dieter!

Für den Monat nehmen wir dann eben die ersten 2 der letzten 4 Zeichen ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
08.03.2011 um 21:45 Uhr
Hallo bastla!

OK, Du hast gewonnen

Gruß Dieter

[edit] Auf bastlas Anregung (Bibers edukatives Vorhaben ...) den minimalen Code-Ausschnitt wieder entfernt [\edit]
Bitte warten ..
Mitglied: bastla
08.03.2011 um 21:54 Uhr
Hallo Dieter!

Ich würde ja (im wirklichen Leben) auch den "Mittelweg" gehen (und Dein Array-Ansatz gefällt mir übrigens sehr gut ) - aber der Spieltrieb ist eben manchmal ziemlich stark ...

BTW: Du unterläufst gerade endgültig Bibers edukatives Vorhaben ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
08.03.2011 um 22:11 Uhr
[OT]
...ich hab euch im Auge.....

die Angesprochenen fühlen sich auch garantiert als die Angesprochenen....

Gebt ihr doch wenigstens heute zum Weltfrauentag einen halben Tag Vorsprung....
Andere mit diesem Tag Geehrte bekommen so viel Zeit schon zum "Ich zieh mir nur schnell was über"...

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: lionne
09.03.2011 um 11:31 Uhr
Hallo Zusammen,

ich habe versuch mit dem Skript von bastla und die Vorschläge etwas zu bastellt, aber ich bekomme keine Ergebnisse angezeigt

Meine Idee sind:
- aus der Dateiname "dateiname_20110309.txt" die Positionen der Zeichnen "_" und "." zu suchen.
- die Länge rauszufinden und das Zeichnen zwischen "_" und "." zu lesen
- diese Zeichnen will ich dann nehmen und zerlegen und den Odner für das kopieren zu bauen

Können Sie mir bitte noch ein Tipps geben, warum es nicht klappt?
Hier das geänderte Skript

01.
Dim QuellOrdner, QuellTyp, ZielOrdner, position1, position2, datumString, lange  
02.
QuellOrdner = "C:\Temp\TestDateien"  
03.
QuellTyp = "txt"  
04.
ZielOrdner = "C:\Temp\AblageTestDateien\" & Mid(datumString, 1,4) & "\" & Mid(datumString, 5,6) & "\" & Mid(datumString, 7,8)  
05.
Set fso = CreateObject("Scripting.FileSystemObject")  
06.
'Zielordner (bei Bedarf) erstellen  
07.
 
08.
Ziel = Split(ZielOrdner, "\") 'Teilpfade durch Zerlegung anhand der "\" bilden  
09.
ZielPfad = Ziel(0) 'Start mit Laufwerk  
10.
 
11.
For i = 1 To UBound(Ziel)  
12.
    ZielPfad = ZielPfad & "\" & Ziel(i) 'ZielPfad um jeweiligen Teilpfad verlängern  
13.
    If Not fso.folderExists(ZielPfad) Then fso.CreateFolder(ZielPfad) 'und bei Bedarf erstellen  
14.
Next  
15.
'Dateien kopieren  
16.
For Each Datei In fso.GetFolder(QuellOrdner).Files 'alle Dateien des QuellOrdners durchgehen  
17.
	 
18.
	position1 = InStr(Datei, "_") ' Suche die Position von "_" aus Dateiname 
19.
	position2 = InStr(Datei, ".") ' Suche die Position von "." aus Dateiname 
20.
	lange = len(position1 - position2) ' 
21.
	datumString = mid(Datei, position1, lange) 'Mid (string, start,  [length] ) 
22.
	 
23.
    If LCase(fso.GetExtensionName(Datei.Name)) = LCase(QuellTyp) Then 'Datei des gesuchten Typs?  
24.
        If Not fso.FileExists(ZielOrdner & "\" & Datei.Name) Then 'gleichnamige Datei bereits vorhanden?			 
25.
			 
26.
			MsgBox position 
27.
    	    Datei.Copy ZielOrdner & "\" 'Zielangabe mit abschließendem "\" = Ordner  
28.
        Else  
29.
         'Namenskollision - was tun?  
30.
 
31.
        End If  
32.
    End If  
33.
Next
Danke im Voraus
PS: Bitte ich bin neu in der Programmierungswelt.

Lionne
Bitte warten ..
Mitglied: 76109
09.03.2011 um 12:54 Uhr
Hallo Lionne!

Das wird so nix

Da ja die Ordner von der eingelesenen Datei abhängig sind, müssen die Datums- und ZielOrdner-Auswertungen erst in der "For Each-Schleife stattfinden, wobei die Datumsfragmente aus Dateiname in ein Array geschrieben werden, um bastlas For-Schleife für FolderExists/Create verwenden zu können...

Und in Codezeile 27 könnte anstatt "Datei.Copy" auch "Datei.Move" stehen. D.h. wenn die Dateien im Quell-Ordner sowieso gelöscht werden sollen, dann ist ein Verschieben sicher sinnvoller?

Schematisch in etwa so:
01.
Dim Fso, QuellOrdner, QuellTyp, ZielOrdner, ZielPfad, Datei, Datum, Folder, Folders  
02.
 
03.
ZielOrdner = "C:\Temp\AblageTestDateien" 
04.
QuellOrdner = "C:\Temp\TestDateien"  
05.
QuellTyp = "txt"  
06.
 
07.
Set Fso = CreateObject("Scripting.FileSystemObject")  
08.
  
09.
For Each Datei In Fso.GetFolder(QuellOrdner).Files 'alle Dateien des QuellOrdners durchgehen 
10.
    If LCase(Fso.GetExtensionName(Datei.Name)) = LCase(QuellTyp) Then 'Test Datei-Typ 
11.
        'und hier steht der restliche Code 
12.
        '1. Datum aus Datei.Name isolieren (Datum = ) und zerlegen -> Folders = Array(JJJJ, MM, TT) 
13.
        '2. ZielPfad = ZielOrdner (für jede Datei erneut den ZielOrdner (Start-Ordner) vorgeben) 
14.
        '3. For Each-Schleife (Folder In Folders) FolderExists/CreateFolder (ZielPfad = ZielPfad & "\" & Folder) 
15.
        '4. Test FileExists(ZielPfad), Datei.Move (Verschieben, wenn die Datei im Quell-Ordner eh gelöscht werden soll) 
16.
    End If 
17.
Next
Bin mal gespannt, ob Du daraus schlau wirst?

Gruß Dieter
Bitte warten ..
Mitglied: lionne
09.03.2011 um 14:01 Uhr
Hallo Dieter,

danke für deine Antwort. Ich werde nochmal versuchen.

Gruß
Lionne
Bitte warten ..
Mitglied: bastla
09.03.2011 um 16:55 Uhr
Hallo lionne!

Falls Du davon ausgehen kannst, dass jede ".txt"-Datei nach dem gleichen Namensschema aufgebaut ist (und daher in den letzten 8 Stellen des Namens das Datum enthält), musst Du eigentlich gar nicht weiter zerlegen - den Dateinamen ohne Typ (= alle Bestandteile des Namens vor dem letzten enthaltenen Punkt) erhältst Du ja mit dem (weit ) oben angeführten
fso.GetBaseName(Datei.Name)
Falls doch zerlegt werden soll / muss, solltest Du Dir "Split()" näher ansehen ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
09.03.2011 um 17:08 Uhr
Hallo bastla!

Mit dem zerlegen ist eigentlich das erzeugen des Ordner-Arrays für das testen/erstellen der Sub-Ordner gemeint

Gruß Dieter
Bitte warten ..
Mitglied: bastla
09.03.2011 um 17:11 Uhr
Hallo Dieter!

Ich hatte mich auf
01.
position1 = InStr(Datei, "_") ' Suche die Position von "_" aus Dateiname 
02.
position2 = InStr(Datei, ".") ' Suche die Position von "." aus Dateiname 
03.
lange = len(position1 - position2) ' 
04.
datumString = mid(Datei, position1, lange) 'Mid (string, start,  [length] )
bezogen - das Zerpflücken des Datums selbst ist natürlich klarerweise erforderlich ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
09.03.2011 um 17:17 Uhr
Hallo bastla!

Achso, ich dachte auf meine Codezeile 12

Gruß Dieter
Bitte warten ..
Mitglied: lionne
10.03.2011 um 00:24 Uhr
Hallo zusammen,

ich habe die Dateiname zerlegt. Das Skript funktioniert gut. wie soll ich es mit Array machen? Noch ein Tipps bitte. Im Internet finde keine passende Beipiele.



01.
Dim Fso, QuellOrdner, QuellTyp, ZielOrdner, ZielPfad, Datei, Datum, Folder, Folders  
02.
Dim StrJahr, StrMonat, Str, Tagposition1, position2, datumString, lange1, lange2 , Datum_TEST 
03.
 
04.
ZielOrdner = "C:\Temp\AblageTestDateien" 
05.
QuellOrdner = "C:\Temp\TestDateien"  
06.
QuellTyp = "txt"  
07.
 
08.
Set Fso = CreateObject("Scripting.FileSystemObject")  
09.
 
10.
For Each Datei In Fso.GetFolder(QuellOrdner).Files 'alle Dateien des QuellOrdners durchgehen 
11.
    If LCase(Fso.GetExtensionName(Datei.Name)) = LCase(QuellTyp) Then 'Test Datei-Typ 
12.
        'und hier steht der restliche Code 
13.
        '1. Datum aus Datei.Name isolieren (Datum = ) und zerlegen -> Folders = Array(JJJJ, MM, TT) 
14.
		 
15.
			position1 = InStr(Datei.Name, "_") ' Suche die Position von "_" aus Dateiname 
16.
			position2 = InStr(Datei.Name, ".") ' Suche die Position von "." aus Dateiname 
17.
			lange1 = position1 + 1 
18.
			Datum =  mid(Datei.Name, lange1, 8) 'Gibt 8 Zeichnen zurück ab Startposition lange1 
19.
			StrJahr = mid(Datum, 1,4) 
20.
			StrMonat = mid(Datum, 5,2) ' 2 Zeichen ab Position 5 
21.
			StrTag = mid(Datum, 7,2)   ' 2 Zeichen ab Position 7 
22.
			 
23.
			 
24.
		 
25.
        '2. ZielPfad = ZielOrdner (für jede Datei erneut den ZielOrdner (Start-Ordner) vorgeben) 
26.
        '3. For Each-Schleife (Folder In Folders) FolderExists/CreateFolder (ZielPfad = ZielPfad & "\" & Folder) 
27.
        '4. Test FileExists(ZielPfad), Datei.Move (Verschieben, wenn die Datei im Quell-Ordner eh gelöscht werden soll) 
28.
    End If 
29.
Next
Danke und Gruß
Lionne
Bitte warten ..
Mitglied: 76109
10.03.2011 um 07:50 Uhr
Hallo Lionne!

OK, dann helfe ich mal ein bisschen

Bei diesem Code wäre zunächst Punkt 1 und 2 erledigt:
01.
Dim Fso, QuellOrdner, QuellTyp, ZielOrdner, ZielPfad, Datei, Datum, Folder, Folders 
02.
 
03.
ZielOrdner = "C:\Temp\AblageTestDateien" 
04.
QuellOrdner = "C:\Temp\TestDateien" 
05.
QuellTyp = "txt" 
06.
 
07.
Set Fso = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
For Each Datei In Fso.GetFolder(QuellOrdner).Files 'alle Dateien des QuellOrdners durchgehen 
10.
    If LCase(Fso.GetExtensionName(Datei.Name)) = LCase(QuellTyp) Then 'Test Datei-Typ 
11.
        
12.
       '1. Datum aus Datei.Name isolieren, auf Zahlenwert testen und in Array zerlegen -> Folders = Array(JJJJ, MM, TT) 
13.
        Datum = Right(Fso.GetBaseName(Datei.Name), 8) 'z.B. Textdatei_20110225.txt, dann Datum = 20110225 
14.
          
15.
        If IsNumeric(Datum) Then 'Test ob Datum eine Zahlenwert ist 
16.
            Folders = Array(Left(Datum, 4), Mid(Datum, 5, 2), Right(Datum, 2)) 'Folders = Array(JJJJ, MM, TT) 
17.
        
18.
           '2. ZielPfad = ZielOrdner (für jede Datei erneut den ZielOrdner (Start-Ordner) vorgeben) 
19.
            ZielPfad = ZielOrdner 
20.
 
21.
           '3. For Each-Schleife (Folder In Folders) FolderExists/CreateFolder (ZielPfad = ZielPfad & "\" & Folder) 
22.
           '4. Test FileExists(ZielPfad & ...), Datei.Move (Verschieben, wenn Datei im Quell-Ordner gelöscht werden soll) 
23.
        End If 
24.
    End If 
25.
Next
Wobei ich Punkt 1 etwas vereinfacht habe. Punkt 3 und 4 solltest Du nun alleine hinbekommen?

Gruß Dieter
Bitte warten ..
Mitglied: lionne
10.03.2011 um 12:47 Uhr
Hallo Dieter,

vielen Dank für alle Tipps. Vielen Dank auch an alle anderen. Ich habe mehrmal probiert und es hat geklappt.

Ich schreibe in einer variable der Pfadname der Datei. Diese möchte ich gerne in einer Tabelle in der Datenbank speichern. Kannst du mir bitte sagen welche VBS Befehl ich benutzen kann?
Im Script ist die Datenbankverbindung schon vorhanden. Ich muss nur die Tabelle mit dem Pfadnamen aktualisieren.

01.
 
02.
Dim Fso, QuellOrdner, QuellTyp, ZielOrdner, ZielPfad, Datei, Datum, Folder, Folders, DateiPfad 
03.
 
04.
ZielOrdner = "C:\Temp\AblageTestDateien" 
05.
QuellOrdner = "C:\Temp\TestDateien" 
06.
QuellTyp = "txt" 
07.
 
08.
Set Fso = CreateObject("Scripting.FileSystemObject") 
09.
 
10.
For Each Datei In Fso.GetFolder(QuellOrdner).Files 'alle Dateien des QuellOrdners durchgehen 
11.
    If LCase(Fso.GetExtensionName(Datei.Name)) = LCase(QuellTyp) Then 'Test Datei-Typ 
12.
        
13.
       '1. Datum aus Datei.Name isolieren, auf Zahlenwert testen und in Array zerlegen -> Folders = Array(JJJJ, MM, TT) 
14.
        Datum = Right(Fso.GetBaseName(Datei.Name), 8) 'z.B. Textdatei_20110225.txt, dann Datum = 20110225 
15.
          
16.
        If IsNumeric(Datum) Then 'Test ob Datum eine Zahlenwert ist 
17.
            Folders = Array(Left(Datum, 4), Mid(Datum, 5, 2), Right(Datum, 2)) 'Folders = Array(JJJJ, MM, TT) 
18.
	    
19.
           '2. ZielPfad = ZielOrdner (für jede Datei erneut den ZielOrdner (Start-Ordner) vorgeben) 
20.
            ZielPfad = ZielOrdner 
21.
	    
22.
           '3. For Each-Schleife (Folder In Folders) FolderExists/CreateFolder (ZielPfad = ZielPfad & "\" & Folder) 
23.
		For Each Folder In  Folders 
24.
			ZielPfad = ZielPfad & "\" & Folder 'ZielPfad um jeweiligen Teilpfad verlängern  
25.
			If Not fso.folderExists(ZielPfad) Then fso.CreateFolder(ZielPfad) 'und bei Bedarf erstellen  
26.
		Next 
27.
		    
28.
           '4. Test FileExists(ZielPfad & ...), Datei.Move (Verschieben, wenn Datei im Quell-Ordner gelöscht werden soll) 
29.
		If Not fso.FileExists(ZielPfad & "\" & Datei.Name) Then 'gleichnamige Datei bereits vorhanden?  
30.
    	    Datei.Copy ZielPfad & "\" 'Zielangabe mit abschließendem "\" = Ordner  
31.
			 
32.
			'AbsolutePathName der Dateien auslesen und in der Datenbank Tabelle speichern 
33.
			DateiPfad = fso.GetAbsolutePathName(ZielPfad) & "\" & Datei.Name 
34.
			 
35.
        Else  
36.
		End If 
37.
		    
38.
        End If 
39.
    End If 
40.
Next 
41.
 
Danke
Lionne
Bitte warten ..
Mitglied: 76109
10.03.2011 um 14:18 Uhr
Hallo Lionne!

Freut mich, dass Du den Rest selbst hinbekommen hast

Vermute mal, Du hast das Script mit Notepad++ geschrieben, weil die Tab's etwas verutscht sind

Bei der Codezeile 33 hätte doch eigentlich
DateiPfad = ZielPfad & "\" & Datei.Name
ausgereicht oder nicht?

Falls Du kein Plan B hast, für den Fall, dass eine Datei schon existiert, dann kann das Else in Codezeile 35 auch entfallen.

Datenbank? Was für eine Datenbank und was für eine Verbindung? ADO-Recordset...?

In Sachen Datenbanken ist eigentlich Biber - der ein Auge auf uns hat - der Super-Experte

Gruß Dieter
Bitte warten ..
Mitglied: bastla
10.03.2011 um 14:40 Uhr
... in Sachen Datenbanken würde Biber - der ein Auge auf uns hat - vermutlich (so wie ich) zu einem neuen Thread raten - vom Thema "VBS- Ordner automatisch erstellen und datei reinkopieren" sind wir damit nämlich schon ziemlich weit entfernt ...

Grüße
bastla
Bitte warten ..
Mitglied: lionne
10.03.2011 um 15:39 Uhr
Hallo Dieter, Hallo bastla,

@Dieter
Ja ich schreibe das Script mit Notepad++.

Codezeile 33 habe ich mit deiner Variante geändert. Danke

Ich habe eine Oracle Datenbank.

@bastla
ich werde dieser Beitrag als gelöst markieren und werde dann im Internet suchen, falls ich nichts finde werde ich dann einen neuen Beitrag öffnen.

Eine letzte Frage: könnt ihr mir ein gutes Buch für VBS empfehlen? Ich möchte gerne nach dem Praktikum mich sehr mit dem Thema beschäftigen und so gut werden wie euch. Natürlich brauche ich Zeit und gut zu werden aber ich gebe nicht auf.

Danke
Lionne
Bitte warten ..
Mitglied: Biber
10.03.2011 um 18:13 Uhr
Moin lionne,

zum Thema "gutes Buch für VBS empfehlen":
Mein Tipp: Stöbere erstmal in unseren "Links" in den Bereichen "Batch & Shell" und "Visual Basic, VBA und VB.NET" hier im Forum.

Dort sollten auch einige Empfehlungen zu VBS-Skripting-Seiten und VBS-Tutorials dabei sein.
Bestimmt dabei sind die "Scripting Guys" von Microsoft, auf die wir oft verweisen.

Wenn du damit so zwei, drei Tage zugebracht hast, dann kannst du selbst besser einschätzen, ob ein Buch für absolute beginners oder eine allgemeine Referenz oder aber ein Buch mit tonnenweise Beispielskripten für dich am Sinnvollsten ist.

Was "echte" Bücher zum Thema VBS & Skripting angeht, da fragst du mit bastla, didi1954 und mir garantiert die Falschen.
Also ja: Bücher haben wir alle mehr als eins, aber vermutlich hat keiner von uns jemals ein Buch über VBS gelesen. Da gibt es Spannenderes.
"Learning by doing" würde bastla sicherlich empfehlen und ich kann nur dazu nicken.

Übrigens, es gibt drei Sätze, die ich Frauen nie glaube:

Zitat von lionne:
(1) ich werde dieser Beitrag als gelöst markieren
...
(2) Eine letzte Frage:

und
(3) "Ich bin gleich fertig, ich muss mir nur schnell was überziehen."

Wobei der letzte Satz nicht von dir ist.
Kannst du bitte, wenn die Frage "VBS-Ordner automatisch erstellen und datei reinkopieren" deiner Meinung nach hinreichend beantwortet ist,
heute oder besser noch JETZT einen WG-mortadellafarbenen "Gelöst"-Haken setzen?

In der Hinsicht bin ich ein wenig penibel.

Danke und wir sehen uns im nächsten Beitrag
Biber

P.S. @bastla und didi1954
Vielen Dank, dass ihr so zurückhaltend und geduldig wart!
Bitte warten ..
Mitglied: 76109
10.03.2011 um 18:40 Uhr
Hallo Lionne!

Zitat von Biber:
Was "echte" Bücher zum Thema VBS & Skripting angeht, da fragst du mit bastla, didi1954 und mir garantiert die Falschen.
Also ja: Bücher haben wir alle mehr als eins, aber vermutlich hat keiner von uns jemals ein Buch über VBS gelesen. Da
gibt es Spannenderes. "Learning by doing" würde bastla sicherlich empfehlen und ich kann nur dazu nicken.
Dem stimme ich voll und ganz zu und hätte es nicht besser formulieren können

Auf dieser Seite findes Du eine nützliche VBS-Hilfedatei (script56.chm) zum downloaden und sonstige Skript-Beispiel.Dateien.

Ansonsten noch viel Spaß beim VBS-Lernen!

Gruß Dieter
Bitte warten ..
Mitglied: bastla
10.03.2011, aktualisiert 18.10.2012
@Biber & Dieter
Amen.

@lionne
Hier zumindest noch ein paar Links - beinahe auch zu einem Buch (es blieb dann aber bei der Erwähnung des Autors) ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
VB for Applications
Excel Inhaltsverzeichnis Layout automatisch erstellen (3)

Frage von Julian8990 zum Thema VB for Applications ...

Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Batch & Shell
Batch: .rar-Pakete automatisch Ordner erstellen und verschieben (2)

Frage von BowserMD zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...