Kopieren mit Variable

flame4ever

Grünschnabel
Hallo an Alle,
ist es möglich im Kopierbefehl eine Variable einzubinden so wie hier bei den konvertieren?

Kopieren.copyFile "Ordner\Ordner\" & vari & "\Ordner\dat.doc", "Ordner1\Ordner1\" & vari & ".doc", True

MfG flame4ever
 

flame4ever

Grünschnabel
Diesen meine ich:
Kopieren.copyFile "Ordner\Ordner\" & vari & "\Ordner\dat.doc", "Ordner1\Ordner1\" & vari & ".doc", True
nur wie übergebe ich richtig eine Variable?
 

Yaslaw

alter Rempler
Moderator
Ist Kopieren ein Object einer selbstgeschriebenen Klasse? Oder was ist Kopieren?

Nochmals: Grundsätzlich sieht dein Code gut aus. Nur weiss ich nicht, wass Kopieren.copyFile für Parameter erwartet, ergo kann ich dir nicht sagen ob das so mit den Parametern richtig ist.
Und wie du die Variable 'vari' befüllst weisst du wohl selber.

Also, was ist die Frage?

Nachtrag:
Wirklich sauber währe so etwas (in der Annahme, dass Kopieren ein FileSystemObject ist)
Visual Basic:
Dim srcPath AS String
Dim dstPath AS String
Dim fso As New FileSystemObject

srcPath = "Ordner\Ordner\" & vari & "\Ordner\dat.doc"
dstPath = "Ordner1\Ordner1\" & vari & ".doc"

Call fso.copyFile(Source:=srcPath, Destination:=dstPath, OverWriteFiles:=True)
 
Zuletzt bearbeitet:

flame4ever

Grünschnabel
Ja da hast du recht.
Set Kopieren = CreateObject("Scripting.FileSystemObject")
vorher habe ich einen ordnernamen ausgelesen und in vari hinterlegt, weil die datei genaus heisen soll.
Also war der code gundsätzlich richtig?
 

flame4ever

Grünschnabel
das ist ja schon mal gut und wie bekomme ich es jetzt noch hin alles in eine schleife zu packen, um so mehrere ordner (anzahl unbekannt) bearbeiten zu können?
 

Yaslaw

alter Rempler
Moderator
Bitte definiere deine Schleife mal genauer. Über was soll sie gehen? Hast du ein Array mit den Variablen? Ist es ein Zähler? Ist es eine Leiste aus einer ListBox?
 

flame4ever

Grünschnabel
Das ist das script es liest den namen eines Ordners aus um dann dateien wie den Ordner zu benennen und zu verschieben.
Jetzt benötige ich eine schleife die das mit alles Ordnern in dem Ordner macht :confused: und aufhört wenn alles Ordner abgearbeitet sind.
Wenn du fragen hast einfach schreiben.


Code:
Dim Kopieren, objFSO, oFolders, oFolder, oSubFolders, Text
Set Kopieren = CreateObject("Scripting.FileSystemObject")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set oFolders = objFSO.GetFolder("Ordner1\Ordner2\")  'Festlegen des Hauptordners
Set oSubFolders = oFolders.SubFolders ' Ermitteln der Unterordner
Dim vari(10)      ' Feldgröße definieren
For Each oFolder In oSubFolders   
 For test = 1 To 10
 Text = oFolder.Name    ' Speichern des aktuellen unterordner in Variable Text
 vari(test) = "Name " &Text  ' Zuweiseung Feld
  Next
Next
Kopieren.copyFile "Ordner1\Ordner2\" & vari & "\Ordner3\dat1.doc", "Ordner1\Ordner6\" & vari & ".doc", True
If Kopieren.FileExists ("Ordner1\Ordner2\" & vari & "\Ordner4\dat2.doc") Then
Kopieren.copyFile "Ordner1\Ordner2\" & vari & "\Ordner3\Ordner4\dat2.doc", "Ordner1\Ordner5\" & vari & ".doc", True
End If
Kopieren.copyFile "Ordner1\Ordner2\" & vari & "\Ordner3\Ordner4\dat3.doc", "Ordner1\Ordner5\" & vari & ".doc", True
 

Yaslaw

alter Rempler
Moderator
Schmeiss den ganzen Kopieren-Teil in die Schleife (For Each... Next) die du hast. Und schon macht er das mit jedem Ordner *g*. Die For test= Schleife brauchst du nicht.