Bräuchte ein batch Script für Windows

GhostRiderDE

Ensign
Registriert
Juli 2019
Beiträge
141
Hi,

ich bräuchte ein Batch (.bat) Script, um spezifische Dateien von einem Ordner in einen anderen zu kopieren, und vorher Dateien die schon im Zielordner sind, zu löschen.

Folgende Schritte wären erwünscht: (wenn möglich)

  1. vorhandene, spezifische Dateien (die namentlich angegeben werden müssen) aus dem Ziel-Ordner löschen.
  2. nach dem Löschen dieser Dateien aus dem Ziel-Ordner, Dateien (die namentlich angegeben werden müssen) aus einem anderen Ordner in den Zielordner kopieren
  3. Ein Log-File (.txt) am Ende des Batch erstellen, die ich auch manuell benennen kann, und auf den Desktop kopieren. Der Inhalt des Log-Files müsste genau sagen, welche Dateien kopiert wurden und sich in dem Moment in dem Ziel-Ordner befinden.

Wenn ihr mir bitte ein Beispiel dafür machen könntet, wo ich am besten (da ich von sowas wenig bis keine Ahnung habe! :rolleyes:) nur die Pfade und/oder Dateinamen ändern müsste, wäre ich euch sehr dankbar. 👍
 
Würde dir gerne helfen, allerdings sehe ich hier noch keine eigene Leistung in Form eines von dir vorbereiteten Code/Batchzeilen.

Ganz ohne selbständiges anlernen/erarbeiten wird es von meinerseite aus nichts, etwas Mühe für kostenlose Hilfe darf es dann auch sein. ;)

Zu dem, welches Windows? Wenn es Windows 10 ist, dann würde ich schon zur Powershell greifen. :)

Gib ein bisschen Input was du erarbeitet hast und dir wird eher geholfen, ich und denkbar die meisten anderen User in diesem Forum sind es Leid die "Lösung" auf dem Silbertablett zu servieren. ;)
 
  • Gefällt mir
Reaktionen: Suchtbolzen, SR388, tony_mont4n4 und 2 andere
Schaue Dir mal robocopy und seine Parameter auf der Kommandozeile/Powershell an. Infos zu den Parametern bekommst Du mit robocopy /?.
 
  • Gefällt mir
Reaktionen: K3ks und yxman
du hast jeden einzelnen Schritt doch schon aufgelistet ... ehrlich gesagt ist das so einfach dass du es auch allein hinbekommen musst. Jeder einzelne Schritt ist ja trivial und einfach nur ein Befehl aufzurufen mit den Argumenten, die du an das Skript uebergeben hast. Und "loeschen", "kopieren" und "in Datei schreiben" hast du wohl sicher schon mal gemacht, falls nicht, findest du dazu immer den Befehl im Netz. Das Aneinanderreihen davon schaffst du auch, wie man die Argumente von Batch bekommt - naja, ich sag mal du bist nicht der erste.

Versuch es doch einfach mal, das schaffst du locker alleine.
 
  • Gefällt mir
Reaktionen: K3ks
Code:
Remove-Item -Path "C:\Users\User\Desktop\Test\TMInfinity.exe"
Remove-Item -Path "C:\Users\User\Desktop\Test\TMInfinity.dll"

Write-Host TMInfinity Files were removed from gamefolder, press a key to copy TMUnlimiter 0.42 Files to gamefolder.

pause

Copy-Item -Path "C:\Users\User\Desktop\TM Unlimiter 0.42\TMUnlimiter.exe"  -Destination C:\Users\User\Desktop\Test

Copy-Item -Path "C:\Users\User\Desktop\TM Unlimiter 0.42\TMUnlimiter.ini"  -Destination C:\Users\User\Desktop\Test

Copy-Item -Path "C:\Users\User\Desktop\TM Unlimiter 0.42\TMUnlimiterProbe.dll" -Destination C:\Users\User\Desktop\Test

Write-Host TMUnlimiter 0.42 files were copied successfully to gamefolder.

Pause

Grundsätzlich funktioniert das, ist aber halt sehr grob. Weiß auch nicht wie ich eine Logdatei in Form einer .txt mit dem was bei der letzten Script Ausführung kopiert/gelöscht wurde, und vor allem wann (Datum & Uhrzeit).

Theoretisch brauch ich entweder dieses Script zwei mal, also einmal so rum und einmal genau anders herum. Oder, wenn das möglich wäre, das das Script abfragt welche der Dateien sich in dem Ziel Ordner schon befinden, und dann eben genau den dann nötigen Schritt ausführen. Und so alles in einem Script bleiben kann.

Ist das genug Eigeninitiative @Red-John bzw qualifiziere ich jetzt mittlerweile, Hilfe zu bekommen ? Oder muss ich jetzt erst noch nen Powershell - Lehrgang vorher machen, bevor mir jemand mit dem Rest helfen könnte ? In dem Fall hätte ich mir fragen hier komplett sparen können, genau wie den Sinn das es Orte wie diesen hier gibt, bei dem man annehmen könnte, man würde Hilfe bekommen. Wird aber mehr oder weniger abgelehnt, weil man es nicht selbst kann. Wozu dann noch fragen ? Sorry, aber der erste Kommentar hat mich da doch etwas getriggert. :utripper:

@Red-John Wenn man nicht helfen will, wie wäre es mit einfach nix schreiben, anstatt so Kommentare ??? Geht doch auch anders, @Bodennebel und @abcddcba haben es doch auch geschafft nen Kommentar zu schreiben, ohne direkt so ne Kontra Einstellung anzunehmen.
 
GhostRiderDE schrieb:
Ist das genug Eigeninitiative @Red-John bzw qualifiziere ich jetzt mittlerweile, Hilfe zu bekommen ? Oder muss ich jetzt erst noch nen Powershell - Lehrgang vorher machen, bevor mir jemand mit dem Rest helfen könnte ? In dem Fall hätte ich mir fragen hier komplett sparen können, genau wie den Sinn das es Orte wie diesen hier gibt, bei dem man annehmen könnte, man würde Hilfe bekommen. Wird aber mehr oder weniger abgelehnt, weil man es nicht selbst kann. Wozu dann noch fragen ? Sorry, aber der erste Kommentar hat mich da doch etwas getriggert. :utripper:

@Red-John hat doch Recht. Hier im Forum sind viele hilfsbereite Leute, aber wenn vom Fragensteller nicht ein bisschen Eigeninitative kommt ist das etwas schwach bzw. mindert das die Bereitschaft zu helfen.
Wir sind hier ja nicht beim Metzger, wo man einfach sagt was man will und das dann bekommt.
Hättest du den Code von eben schon in den Startpost gepackt dann hätte niemand etwas gesagt. :)

Zum Schreiben einer Log-Datei kannst du dir die Funktion Out-File ansehen.

Handelt es sich immer um die gleichen Dateinamen?
 
Schau mal hier, das ist nun mit Logfile. Wobei ich mir ziemlich sicher bin, dass es eleganter geht.

Code:
$logfile = "C:\Users\Benutzername\Desktop\Test\log.txt"

Remove-Item -Path "C:\Users\Benutzername\Desktop\Test\Test 1\Test-del.txt"

Write-Host TMInfinity Files were removed from gamefolder, press a key to copy TMUnlimiter 0.42 Files to gamefolder.
Write-Output "$([datetime]::Now) TMInfinity Files were removed from gamefolder, press a key to copy TMUnlimiter 0.42 Files to gamefolder." | Out-File -FilePath "$logfile" -Append

pause

Copy-Item -Path "C:\Users\Benutzername\Desktop\Test\Test 1\test.txt"  -Destination C:\Users\Benutzername\Desktop\Test

Write-Host TMUnlimiter 0.42 files were copied successfully to gamefolder.
Write-Output "$([datetime]::Now) TMUnlimiter 0.42 files were copied successfully to gamefolder." | Out-File -FilePath "$logfile" -Append

Pause

Im Log-File steht dann folgendes:

Code:
02/25/2020 13:10:11 TMInfinity Files were removed from gamefolder, press a key to copy TMUnlimiter 0.42 Files to gamefolder.
02/25/2020 13:10:15 TMUnlimiter 0.42 files were copied successfully to gamefolder.

Zum Testen, ob eine Datei bereits existiert, kannst du bspw. Test-Path benutzen.
 
  • Gefällt mir
Reaktionen: PERKELE
Vielen Dank @Suchtbolzen , schau mir das gleich direkt an wenn ich wieder zu Hause bin. 👍👍

Nachtrag:

Hatte jetzt mal Gelegenheit das ganze anzuschauen. Das ist aber jetzt nur für 1 File was entfernt und kopiert wird, richtig ? Kann ich das einfach durch weitere erweitern, wie es bei mir der Fall war ? Da es sich ja um 2 Dateien handelt. Oder muss ich da noch was ändern ?
 
Zuletzt bearbeitet:
Zurück
Oben