Ordnerinhalte verschieben
Ordnerinhale verschieben
Hallo,
da ich ein blutiger Anfänger bin und ich dringend einen Batch benötige, mit dem ariable Datei in variablen Ordnern, in einen anderen Ordner kopiert werden und der Ursprungsordner anschließend gelöscht wird, wende ich mich hilfesuchend an Euch.
Ouelle: K:\ARCHIV\ekp_kd\failed\20070123-170823-00 (Dateien: a004856_349038 und exception.txt).Die Dateien a004856_349038 haben die Attribute-normal.
Ziel: K:\ARCHIV\ekp_kd (nur Dateien (a004856_349038)aus den Unterordnern(20070123-170823-00).
Die Unterordner (20070123-170823-00,20070123-170878-00,20070123-170973-00,... )werden permanent erstellt und aus diesen sollen nur die variablen Dateien(a004856_349038) in den Ordner failed geschoben werden und anschließend diese Unterordner (20070123-170823-00) gelöscht werden.
Für Lösungsvorschläge wär ich sehr dankbar.
Manne
Hallo,
da ich ein blutiger Anfänger bin und ich dringend einen Batch benötige, mit dem ariable Datei in variablen Ordnern, in einen anderen Ordner kopiert werden und der Ursprungsordner anschließend gelöscht wird, wende ich mich hilfesuchend an Euch.
Ouelle: K:\ARCHIV\ekp_kd\failed\20070123-170823-00 (Dateien: a004856_349038 und exception.txt).Die Dateien a004856_349038 haben die Attribute-normal.
Ziel: K:\ARCHIV\ekp_kd (nur Dateien (a004856_349038)aus den Unterordnern(20070123-170823-00).
Die Unterordner (20070123-170823-00,20070123-170878-00,20070123-170973-00,... )werden permanent erstellt und aus diesen sollen nur die variablen Dateien(a004856_349038) in den Ordner failed geschoben werden und anschließend diese Unterordner (20070123-170823-00) gelöscht werden.
Für Lösungsvorschläge wär ich sehr dankbar.
Manne
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 49660
Url: https://administrator.de/contentid/49660
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
12 Kommentare
Neuester Kommentar
Hi Manne,
eine Gleichung, die nur Variablen enthält, geht nicht auf.
Man braucht daher ein Suchmuster für Ordner und für Dateien, die bleiben oder verschoben werden.
Wenn ich Dich richtig verstehe, dann sollen die zwei Dateien nicht nach failed verschoben werden, denn dann würden sie ja laufend überschrieben werden, sondern in einem gleichnamigen Unterordner, richtig?
Z. B.
ekp_kd\Unterordner1\Datei1 verschieben nach ekp_kd\Unterordner1
delete Unterordner1
Nun kommt der nächste Ordner dran.
Habe ich das so richtig verstanden?
Grüße
Guido
eine Gleichung, die nur Variablen enthält, geht nicht auf.
Man braucht daher ein Suchmuster für Ordner und für Dateien, die bleiben oder verschoben werden.
Wenn ich Dich richtig verstehe, dann sollen die zwei Dateien nicht nach failed verschoben werden, denn dann würden sie ja laufend überschrieben werden, sondern in einem gleichnamigen Unterordner, richtig?
Z. B.
ekp_kd\Unterordner1\Datei1 verschieben nach ekp_kd\Unterordner1
delete Unterordner1
Nun kommt der nächste Ordner dran.
Habe ich das so richtig verstanden?
Grüße
Guido
Hallo ManneKL!
Wenn das etwaige Überschreiben von Zieldateien kein Problem darstellt, könntest Du es so machen:
Aus zeitlichen Gründen leider ungetestete Version, aber: Solange Du das echo in den Zeilen 4 und 5 nicht entfernst, wird nur angezeigt, was passieren würde ...
Grüße
bastla
[Edit] Zielpfad um Unterverzeichnis "failed" ergänzt [/Edit]
Wenn das etwaige Überschreiben von Zieldateien kein Problem darstellt, könntest Du es so machen:
@echo off
set "BaseDir=K:\ARCHIV\ekp_kd"
for /f "delims=" %%i in ('dir "%BaseDir%\failed\2007*.*" /b /ad') do (
echo move /y "%BaseDir%\failed\%%i\a00*.*" "%BaseDir%\failed"
echo rd /q /s "%BaseDir%\failed\%%i"
)
Grüße
bastla
[Edit] Zielpfad um Unterverzeichnis "failed" ergänzt [/Edit]
Damit der Code nicht zu unübersichtlich wird, prüfe ich jetzt nicht auf Fehler
In den Konstanten legst wie die Namen schon sagen Quelle, Ziel, etc. fest.
Danach geht die Schleife (S_ListOrdner) über alle Ordner, wird ein Unterordner gefunden, wird der Ordnerpfad an S_Ordner übergeben. Alles was dem Suchstring entspricht wird nun an S_Copy übergeben.
Die Dateien werden jetzt kopiert, zuvor wird der entsprechende Ordner unterhalb von failed angelegt.
Nach dem Kopieren wird der Ordner gelöscht.
Grüße
Guido
In den Konstanten legst wie die Namen schon sagen Quelle, Ziel, etc. fest.
Danach geht die Schleife (S_ListOrdner) über alle Ordner, wird ein Unterordner gefunden, wird der Ordnerpfad an S_Ordner übergeben. Alles was dem Suchstring entspricht wird nun an S_Copy übergeben.
Die Dateien werden jetzt kopiert, zuvor wird der entsprechende Ordner unterhalb von failed angelegt.
Nach dem Kopieren wird der Ordner gelöscht.
Grüße
Guido
'Bestimmte Dateien in einem Verzeichnis kopieren
'Verzeichnis danach löschen
'24.01.07/ge
Option explicit
const C_Quelle = "c:\temp\"
const C_Ziel = "c:\temp\failed\"
Const C_Search = "datei"
Const C_Except_Dir = "failed"
Dim O_FSO
Set O_FSO = CreateObject("Scripting.FileSystemObject")
Call S_ListOrdner
Sub S_ListOrdner
Dim O_Ordner, O_Ordners
Set O_Ordners = O_FSO.GetFolder(C_Quelle)
For each O_Ordner in O_Ordners.subfolders
If O_Ordner.Name <> C_Except_Dir Then
Call S_Ordner(O_Ordner.Path,O_Ordner.Name)
wscript.sleep 500
Call S_DeleteDir (O_Ordner.Path)
End If
Next
End Sub
Sub S_Ordner(P_Dir,P_Ordner)
Dim O_Datei, O_Dir
Set O_Dir = O_FSO.GetFolder(P_Dir)
For each O_Datei in O_Dir.files
If InStr(O_Datei.Name,C_Search) >= 1 Then
Call S_Copy(O_Datei.Path,P_Ordner)
End If
Next
End Sub
Sub S_Copy(P_Datei,P_Ordner)
If Not O_FSO.FolderExists(C_Ziel & "\" & P_Ordner) Then
O_FSO.CreateFolder C_Ziel & "\" & P_Ordner
End If
O_FSO.CopyFile P_Datei,C_Ziel & P_Ordner & "\",true
End Sub
Sub S_DeleteDir(P_Dir)
O_FSO.DeleteFolder P_Dir
End Sub
Hallo ManneKL!
Wenn die "a00*.*"-Dateien immer andere Namen haben, kann in "failed" ohnhin nichts überschrieben werden - würde am Batch daher nichts ändern. Nur für den Fall, dass eine gleichnamige Datei bereits existiert und erhalten bleiben müsste, wäre eine Änderung erforderlich - dann müsstest Du aber erklären, was mit der neuen Datei geschehen sollte (umbenennen, verwerfen).
Kannst Du vielleicht "funktionieren nicht" etwas detaillieren (kopiere einfach die Ausgabe aus dem Command-Fenster)?
Grüße
bastla
P.S.: Komme erst am Abend dazu, mich ausführlicher damit zu beschäftigen.
Wenn die "a00*.*"-Dateien immer andere Namen haben, kann in "failed" ohnhin nichts überschrieben werden - würde am Batch daher nichts ändern. Nur für den Fall, dass eine gleichnamige Datei bereits existiert und erhalten bleiben müsste, wäre eine Änderung erforderlich - dann müsstest Du aber erklären, was mit der neuen Datei geschehen sollte (umbenennen, verwerfen).
Kannst Du vielleicht "funktionieren nicht" etwas detaillieren (kopiere einfach die Ausgabe aus dem Command-Fenster)?
Grüße
bastla
P.S.: Komme erst am Abend dazu, mich ausführlicher damit zu beschäftigen.
*grummel*
...ich würde zwar einerseits diesen Thread gerne schliessen oder zumindest als gelöst markieren aufgrund der beiden Lösungsansätze von bastla und Tundra...
..andererseits finde ich den Diskussionsverlauf für die Nachwelt etwas unbefriedigend.
@ManneKL:
Musstest Du noch Anpassungen vornehmen, um bastla's Shizze zum Fliegen zu bringen bzw. sind da noch Tippfehler drin?
Ich fände es schon schöner, wenn auch für spätere Beitragsleser die endgültige Lösung ersichtlich ist.
Mach mir bitte die kleine Freude und schaff hier Klarheit...
Danke
Biber
Hallo bastla,
Deine Zeilen funktionieren leider nicht.
Habe schon den ganzen Tag damit rumexperimentiert.
Deine Zeilen funktionieren leider nicht.
Habe schon den ganzen Tag damit rumexperimentiert.
Hallo bastla,
vielen Dank für Deine Lösung.
Habe es hinbekommen.
Also, sehr gute Arbeit!
Danke,danke....
Manne
vielen Dank für Deine Lösung.
Habe es hinbekommen.
Also, sehr gute Arbeit!
Danke,danke....
Manne
...ich würde zwar einerseits diesen Thread gerne schliessen oder zumindest als gelöst markieren aufgrund der beiden Lösungsansätze von bastla und Tundra...
..andererseits finde ich den Diskussionsverlauf für die Nachwelt etwas unbefriedigend.
@ManneKL:
Musstest Du noch Anpassungen vornehmen, um bastla's Shizze zum Fliegen zu bringen bzw. sind da noch Tippfehler drin?
Ich fände es schon schöner, wenn auch für spätere Beitragsleser die endgültige Lösung ersichtlich ist.
Mach mir bitte die kleine Freude und schaff hier Klarheit...
Danke
Biber