belloci
Goto Top

Batchjob - kopieren - bei Erfolg löschen

Hallo Admins,

ich habe derzeit ein kleines Batch-Problem… Folgendes soll realisiert werden:

In einem Pfad: \\Server\Share liegen Textdateien. Es werden jeden Tag vier Textdateien erzeugt die so aufgebaut sind: XYZ_Jahr_Monat_Tag_Stunde_Minute_Sekunde
Die ersten vier Dateien sollen (anhand des Änderungsdatums?!) in einem anderen Share kopiert werden. Bei Erfolg (!) soll der Inhalt des Quellverzeichnis gelöscht werden…

Mein Problem dabei: Wie schaffe ich es, nur die aktuellen Dateien anzupacken und die Dateien nach Erfolg (und nur dann) zu löschen?

Für Anregungen bin ich wie immer sehr dankbar!

Gruß
Belloci

Content-ID: 222581

Url: https://administrator.de/forum/batchjob-kopieren-bei-erfolg-loeschen-222581.html

Ausgedruckt am: 25.12.2024 um 13:12 Uhr

Endoro
Endoro 21.11.2013 um 08:54:23 Uhr
Goto Top
Hi,
mein Vorschlag:
@ECHO OFF &SETLOCAL
pushd "\\server1\shareX\"  
for /f "tokens=1,2*delims=:_" %%a in ('dir /a-d /b ^|findstr /n $') do (  
	set "$%%c$%%a=%%b"  
)
for /f "tokens=1-4delims==$:" %%a in ('set "$"^|sort /r^|findstr /n $') do if %%a leq 4 (  
	copy "%%d_%%b" "\\server2\shareY\" && echo del "%%d_%%b" || echo error copying "%%d_%%b"  
)
popd
Es ist noch ein echo-Airbag eingebaut.
lg.
Belloci
Belloci 21.11.2013 um 12:07:15 Uhr
Goto Top
Hallo Endoro,

vielen Dank für die Hilfe, dein Skript läuft fast perfekt!

Er kopiert die ersten oder sagen wir die neuesten 4 Dateien - super!

Er löscht jedoch nach Erfolg die alten Dateien im Quellverzeichnis nicht... :/
andimue
andimue 21.11.2013 um 13:17:00 Uhr
Goto Top
Servus Belloci,

ich nehme an, du hast bei deinem Test das "echo" vor dem del-Kommando rausgemacht, oder?
Wenn nicht wäre das einen Versuch wert face-smile

Gruß
Andi
Belloci
Belloci 21.11.2013 um 13:29:37 Uhr
Goto Top
In der Tat, das hatte ich nicht... Aber auch nach dem entfernen des "echo" vor dem del befehl gehts nicht!

Gruß
Endoro
Endoro 21.11.2013 um 14:37:02 Uhr
Goto Top
Hi, aktuell werden nur die 4 kopierten Dateien gelöscht. Um alle zu löschen muss dieses && echo del "%%d_%%b" damit ersetzt werden: && del /q *.
lg.
Belloci
Belloci 21.11.2013 um 15:12:06 Uhr
Goto Top
Danke, jetzt läuft es!

Gruß
Belloci