Batch Datei per Batch umbenennen, sichern und neue Datei einspielen

Rocco1980

Erster Beitrag
Hallo Gemeinde,

ich benötige dringend Hilfe bei folgender Aufgabenstellung. Es soll beim einschalten des Rechners ein Batch ablaufen der in einem festen vorgegebenen Ordner folgende Aufgaben erledigen soll :

Ist der Ordner leer ? Dann kopiere Datei x1 von Quelle q1 in diesen Ordner .... fertig

Ist der Ordner nicht leer - Dann benenne vorhandene Datei x2 um und erweiter den Namen mit einer folge aus Datum und Uhrzeit, verschiebe dann diese Datei in einen Backup Ordner und kopiere danach wieder Datei x1 von Quelle q1 in aktuellen Ordner...

Wäre echt super wenn ihr mir dabei helfen könntet...

danke schon mal im Voraus...
 
Mit Batch etwas schwierig.
Zwar möglich, aber schwierig.

Außerdem könnte es da Stress geben, da die Batch-Datei dann im Autorun-Ordner liegt und schließlich was ändert, aber sich bin ich mir nicht.

Außerdem wird es schwer, den Namen mit dem Namen zu erweitern.
Hatte das Problem letztens. Ich habe es schlicht und einfach nicht geschafft, das aktuelle Datum in eine Variable zu kopieren.


Ich könnte da was probieren, aber das bringt auch nix, da du ja eventuell auch was dabei lernen willst, oder? ^^


Daher denke ich, du versuchst es alleine (oder postest deine bisherigen Versuche) und wir greifen dir weiter unter die Arme.


Und wenn es mit Batch gar nicht geht, kann ich ein C#-Programm schreiben, allerdings fordert das Net-Framework installiert.
Und ob ich das mit C++ hin kriege, kann ich nicht sagen.




Aber als Tipp:
Schau dir unter der Batch-Hilfe mal copy an. Sollte alles haben. Wenn es bei dir vorhanden ist (bei mir schon, weiß nicht, woran das hängt) schau nach xcopy, das kann noch mehr.
Zum Umbenennen brauchst du ren.
Zum Überprüfen brauchst du if und du wirst auch auf jeden Fall die for-SChleife benötigen, denn die kann um einiges mehr, als nur eine Schleife sein. Die wird auch allgemein für Datei-Verarbeitung genutzt, ist aber ziemlich kompliziert

Wenn du beim Verständniss Hilfe brauchst, frag. FOR ist ein schweres Thema. Hab lange gebraucht, um das komplett drin zu haben.

Also, anschauen:

FOR
IF
XCOPY (alternativ COPY)
REN
 
Außerdem wird es schwer, den Namen mit dem Namen zu erweitern.
Hatte das Problem letztens. Ich habe es schlicht und einfach nicht geschafft, das aktuelle Datum in eine Variable zu kopieren.

Sooo schwer ist das nicht, wenn man erstmal den Dreh raus hat. Ich habe selbst erst vor einigen Wochen was zusammenbasteln müssen, um Datum und Uhrzeit in Dateipfaden unterzubringen, bei Dateien ist das nicht viel schwerer.

Mit %date% hat man schon das Datum, und mit folgendem Code bekommt man die Uhrzeit in ein brauchbares Format gespeichert:

Code:
for /f "tokens=1,2,3 delims=: " %%a in ("%time:~0,8%") do set HH=%%a&set MM=%%b&set SS=%%c
set zeit=%HH%.%MM%.%SS%

In der zweiten Zeile dienen die Punkte als Trennzeichen und können beliebig geändert werden.

Sofern man den genauen Dateinamen hat ist es auch kein Problem, den Namen mit obigen Variablen bestücken, nämlich z.B. so:

Code:
rename test.txt test__:%date%__%zeit%.txt

Und das Wichtigste ist zunächst die Abfrage, ob die Datei überhaupt existiert, das macht man mit
Code:
IF EXIST test.txt {
[I]hier Code einfügen[/I]
}

Das jetzt erstmal auf die Schnelle, muss nämlich gleich in die Falle :(
 
%date%

:D:D

Ich Hohlkopf :D

Und ich hab ewig versucht, mittels time die Zeit irgendwie in eine Variable zu kriegen xDxD


Ja, dann gehts auch :D



Was deine Code-Schnipsel angeht:
So auf die Schnelle durchschauen, da sehen sie richtig aus.
Wüsste nix dran auszusetzen.

Kann er also bedenkenlos nutzen^^
 
ot:
Danke Chef! Natürlich sehen sie richtig aus, sie sind getestet und bereits so bei mir im Einsatz ;)


@Rocco: Ich kann ja mal morgen Abend schauen, ob ich Dir da was komplettes zusammenzimmern kann, falls Du es nicht bereits hast.
Übriges ein herzliches Willkommen hier :)

ot:
So, das Bett ruft nun wirklich, muss morgen früh raus :motz
 
Wenn du Net-Framework installierst, kann ich auch mal schauen, ob ich eine C#-Anwendung dazu schreibe.

Ist auf jeden Fall schneller und besser geeignet, braucht aber das Net-Framework.

Ich würde dann eine Oberfläche komplett weg lassen, bis auf den Fall, dass eine angezeigt wird, wenn es einen Fehler gibt.

Einen ganzen Script in Batch zu schreiben, hab ich ehrlich gesagt nicht wirklich Lust drauf. Hab das zu lange nicht gemacht und ich vermisse da immer die Objektorientierung^^


PS: Auch von mir ein Herzliches Willkommen ^^


ot:
@Hidden Evil:

War mir natürlich klar. ^^
Wollte nur noch mein OK dazu setzen, um etwas Sicherheit zu signalisieren. :p


Und ich darf ausschlafen ^^
Hab die Nacht auch gleich genutzt, um ein C# Buch zu lesen. Beeindruckend, wie spannend man sowas erklären kann :D
 
Oben