Batch zum umbenennen einer vorhandenen Text-Datei in Datum.txt und kopieren und verschieben
Hallo zusammen,
irgendwie habe ich gerade eine Blockade, weshalb ich nicht wirklich weiter komme...
Ich muss eine Datei auf dem Server umbenennen und dann in einen Ordner auf einem anderen Server kopieren und dann die Datei in ein Unterverzeichnis verschieben.
Der Name der Datei soll das Datum JJMMTT enthalten.
Könnt Ihr mir bitte helfen?
Ist wahrscheinlich nur eine Kleinigkeit.
Trotzdem vielen herzlichen Dank!
Gruß
Christian
irgendwie habe ich gerade eine Blockade, weshalb ich nicht wirklich weiter komme...
Ich muss eine Datei auf dem Server umbenennen und dann in einen Ordner auf einem anderen Server kopieren und dann die Datei in ein Unterverzeichnis verschieben.
Der Name der Datei soll das Datum JJMMTT enthalten.
Könnt Ihr mir bitte helfen?
Ist wahrscheinlich nur eine Kleinigkeit.
Trotzdem vielen herzlichen Dank!
Gruß
Christian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 367908
Url: https://administrator.de/contentid/367908
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
18 Kommentare
Neuester Kommentar
Hallo,
Rechtsklick auf die Datei und umbenennen.
Hier im Forum schon mal gesucht?
Batch-Datei Dateien umbenennen und verschieben
per Batch Dateien kopieren, umbenennen und nur die kopierten aus dem Ursprungsverzeichnis verschieben
Mit batch eine datei umbenennen und verschieben per zeitplan
Dateien verschieben und umbenennen mit Batch
Batch - Dateien kopieren und ggf. umbenennen
Batch - Dateien umbenennen Verschieben und Dateien von mit bestimmten Zeichen im Dateinamen von der Umbenennung ausschliessen
Ich hab jetzt ein MSDOS/Windows OS als gegeben betrachtet.
Gruß,
Peter
Rechtsklick auf die Datei und umbenennen.
und dann in einen Ordner auf einem anderen Server kopieren
Kopieren oder Verschieben? Rechtsklick auf die Datei und Kopieren oder Verschieen auslösen. Ein Klick auf den Zielserver (da sind doch Freigaben erstellet, oder) und den Zielort - Einfügenund dann die Datei in ein Unterverzeichnis verschieben.
Auf den Zielsystem anmelden, Explorer öffnen, Datei suchen und verschieben mittels RechtsklickDer Name der Datei soll das Datum JJMMTT enthalten.
Ist beim umbenennen zu berücksichtigen.Ist wahrscheinlich nur eine Kleinigkeit.
Für eine (1) Datei ist das doch händisch schneller erledigt. Für viele Dateien ist ein Batch sinnvoll, allerdings fehlt da dann noch das fehlerabfangen und behandlung bei allen Fehlern die auftreten können. Ist doch ein wenig aufwendiger. Wie weit ist denn deine Batch schon bzw. an welcher Stelle hapert es denn?Hier im Forum schon mal gesucht?
Batch-Datei Dateien umbenennen und verschieben
per Batch Dateien kopieren, umbenennen und nur die kopierten aus dem Ursprungsverzeichnis verschieben
Mit batch eine datei umbenennen und verschieben per zeitplan
Dateien verschieben und umbenennen mit Batch
Batch - Dateien kopieren und ggf. umbenennen
Batch - Dateien umbenennen Verschieben und Dateien von mit bestimmten Zeichen im Dateinamen von der Umbenennung ausschliessen
Ich hab jetzt ein MSDOS/Windows OS als gegeben betrachtet.
Gruß,
Peter
Hallo,
Und? Wie weit ist denn nun deine Batchdatei?
Woran hapert es?
Welches OS sind involviert? Nur Windows? Welche Versionen? Welche Rechte? Wie soll nachts definiert sein bzw. wer oder was sorgt dann dafür das deine Batch gestartet wird oder soll die ewig laufen?
.
.
.
Gruß,
Peter
Und? Wie weit ist denn nun deine Batchdatei?
Woran hapert es?
Welches OS sind involviert? Nur Windows? Welche Versionen? Welche Rechte? Wie soll nachts definiert sein bzw. wer oder was sorgt dann dafür das deine Batch gestartet wird oder soll die ewig laufen?
.
.
.
Gruß,
Peter
Hallo,
Und? Wie weit bist du den nun? Überhaupt angefangen?
Ein sollte dir schon mal den ersten Teil deines Dateinamens geben, kannst du auch direkt in dein Batch einbauen (nur die entsprechenden % Zeichen vedopplen). Ansonsten die Variable dateiname verwenden....Oder
Gruß,
Peter
Und? Wie weit bist du den nun? Überhaupt angefangen?
Ein
for /F "tokens=1,2,3,4 delims=. " %a in ('date /t') do set dateiname=%date:~0,2%%date:~3,2%%date:~6,4%
Set GesuchteDatei=TestDatei.txt
for /F "tokens=1,2,3,4 delims=. " %%a in ('date /t') do rename %GesuchteDatei%=%date:~0,2%%date:~3,2%%date:~6,4%.*
Die Datei soll einmal pro Nacht umbenannt und kopiert und verschoben werden.
Warum Kopiert und verschoben?Gruß,
Peter
Hallo,
OK
Existiert \\aaa oder \\bbb und dann existiert die Freigabe cdr_Dateien oder Import? Welche Rechte sind dort in der Freigabe und in der NTFS Sicherheit zugeordnet? Darfst du überhaupt da drauf? Sind die \\aaa und \\bbb per IP auflösbar bzw. sind das FQDNs? Und ganz wichtig - welcher Fehler wird dir wo gemeldet?
Gruß,
Peter
OK
@echo off
Fürs erste weglassen oder aus off ein on machen. Hilft ungemein beim Fehlersuchen.net use s: \\aaa\cdr_Dateien /persistent:no
Passiert hier der Fehler?net use i: \\bbb\Import /persistent:no
Oder passiert hier der Fehler?Existiert \\aaa oder \\bbb und dann existiert die Freigabe cdr_Dateien oder Import? Welche Rechte sind dort in der Freigabe und in der NTFS Sicherheit zugeordnet? Darfst du überhaupt da drauf? Sind die \\aaa und \\bbb per IP auflösbar bzw. sind das FQDNs? Und ganz wichtig - welcher Fehler wird dir wo gemeldet?
ren s:\cdr660.txt s:\cdr_%date%-%time%.txt
Sicher das du ein 6.3.2018 oder ein 12.3.2018 oder ein 15.11.2018 als Datum gefolgt von der Uhrzeit haben willst? Was glaubst du was dein Dateisystem dir dann anbietet wenn du etwas suchst? Oder soll es nicht doch ein JJJJMMTT-HHMMSS sein?net use i: /del /y
net use s: /del /y
Ist überflüssig da wenn deine Batch sich beendet auch deine Umgebung dort vernichtet wird.net use s: /del /y
Wenn ich die Batch ausführe (auf dem entsprechenden Server (aaa)), bekomme ich aber immer die Meldung, dass das Laufwerk nicht gefunden werden kann.
Und welche Fehlermeldung ist es nun?Gruß,
Peter
Hallo,
Dann nimm doch auch das. Z.B. mit
Kein Fehler mehr?
Ebenfalls keinen Fehler mehr.
Baue hier ein dir s:\cdr_*.txt und ein Pause mal ein.
0 Datei(en) kopiert.
Findet er keine cdr_*.* datei?
Beim entwerfen von Batchdateien und zwecks testen hat man das CMD Fenster (Eingabeaufforderung) fast immer geöffnet damit man auch die Eingabe und die Ausgabe sehen kann. So wird das CMD-Fenster nicht nach der aussführung der Batch Datei geschlossen. Und wie schon gesagt - echo off ist erstmal aus zu lassen bzw. mit echo on zu ersetzen...
Und setze deine CMD medlungen hier in Code Tags ein (links vom Editor-Fenster die Zeichen für kleiner als Schrägstrich grösser als). Das hilft uns und somit auch dir.
Gruß,
Peter
Dann nimm doch auch das. Z.B. mit
ren s:\cdr660.txt %date:~0,2%%date:~3,2%%date:~6,4%.txt
Hier kommt mal der Ablauf:
Bitte das Echo Off entfernen oder auskommentieren damit du siehst was wann passiert.net use s: \\aaa\cdr_Dateien /persistent:no
Der Befehl wurde erfolgreich ausgeführt.net use i: \\bbb\Import /persistent:no
Der Befehl wurde erfolgreich ausgeführt.ren s:\cdr660.txt s:\cdr_14.03.2018.txt
copy s:\cdr_*.* i:
s:\cdr_*.*0 Datei(en) kopiert.
Beim entwerfen von Batchdateien und zwecks testen hat man das CMD Fenster (Eingabeaufforderung) fast immer geöffnet damit man auch die Eingabe und die Ausgabe sehen kann. So wird das CMD-Fenster nicht nach der aussführung der Batch Datei geschlossen. Und wie schon gesagt - echo off ist erstmal aus zu lassen bzw. mit echo on zu ersetzen...
Und setze deine CMD medlungen hier in Code Tags ein (links vom Editor-Fenster die Zeichen für kleiner als Schrägstrich grösser als). Das hilft uns und somit auch dir.
Gruß,
Peter
Hallo,
Normalerweise würde wir uns jetzt für deine Info bedanken und in einer Kneipe gehen.
geschrieben? Und da drauf bezog sich meine Antwort.
C:\ProgramData\T-Com\cdr_Dateien>ren s:\cdr660.txt 14032018.txt
Und du bist immer noch in C:\Programdata\.... und nicht in S:
Und wo ist der Dir und Pause eingebaut, dami du ordentlich debuggen kannst? Ein Programm kann grundsätzlich auch auf Papier mit einem Bleistift durchgespielt werden, dazu bedarf es keinen Computer mit einem OS. Geradezu bei Batch von Vorteil sich die einzelnen Schritte klar zu machen und was im einzelnen dort passiert. Vielleicht mal bei Rob van der Woude vorbeischauen.
Gruß,
Peter
Normalerweise würde wir uns jetzt für deine Info bedanken und in einer Kneipe gehen.
Info: Da hatte ich noch nie Fehler
Hast du nicht selbstWenn ich die Batch ausführe (auf dem entsprechenden Server (aaa)), bekomme ich aber immer die Meldung, dass das Laufwerk nicht gefunden werden kann.
C:\ProgramData\T-Com\cdr_Dateien>cd s:
S:\
Wenn du schon ein CD machst, solltest du auch dorthin wechseln, oder willst du das nicht? Ein S: hilft in diesem fall.S:\
C:\ProgramData\T-Com\cdr_Dateien>ren s:\cdr660.txt 14032018.txt
Info: Die Datei liegt da, ganz jungfräulich
Welche Datei genau liegt dort und ist jungfräulich? Was sagt ein Dir? Denn deine nächste Anweisung läuft ins leereC:\ProgramData\T-Com\cdr_Dateien>copy s:\cdr_*.* i:\
s:\cdr_*.*
0 Datei(en) kopiert.
Ist wohl korrekt da ja in dein S:\ selbst jetzt nur noch die 14032018.txt liegt. Kopieren willst du aber die cdr_*.* (und die gibbet nicht), daher ist ein 0 Datei(en) kopiert auch richtig.s:\cdr_*.*
0 Datei(en) kopiert.
C:\ProgramData\T-Com\cdr_Dateien>move s:\cdr_*.* s:\archiv\
Das gleiche wie obenUnd du bist immer noch in C:\Programdata\.... und nicht in S:
Und wo ist der Dir und Pause eingebaut, dami du ordentlich debuggen kannst? Ein Programm kann grundsätzlich auch auf Papier mit einem Bleistift durchgespielt werden, dazu bedarf es keinen Computer mit einem OS. Geradezu bei Batch von Vorteil sich die einzelnen Schritte klar zu machen und was im einzelnen dort passiert. Vielleicht mal bei Rob van der Woude vorbeischauen.
Gruß,
Peter
Hallo Pepper,
ergänzen zu Pjordorfs Kommentaren:
In Deiner Betch sehe ich keinen Befehl, der zwingend einen Laufwerksbuchstaben erfordert.
Das
Statt
einfach
schreiben.
Warum nennst Du dann erst eine Datei um und kopierst und verschiebst sie dann nicht, sondern alle anderen?
Sollte das nicht wie folgt aussehen?
Falls ja, dann sollte es insgesamt so aussehen:
Gruß Frank
ergänzen zu Pjordorfs Kommentaren:
In Deiner Betch sehe ich keinen Befehl, der zwingend einen Laufwerksbuchstaben erfordert.
Das
net use
kannst Du Dir eigentlich schenken und solltest es auch.Statt
s:
und i:
kannst Du die UNC-Pfade nutzen, also beispielsweise stattcopy s:\cdr_*.* i:\
einfach
copy \\aaa\cdr_Dateien\cdr_*.* \\bbb\Import\
schreiben.
Zitat von @Pepper:
Ich muss eine Datei auf dem Server umbenennen und dann in einen Ordner auf einem anderen Server kopieren und dann die Datei in ein Unterverzeichnis verschieben.
Der Name der Datei soll das Datum JJMMTT enthalten.
Ich muss eine Datei auf dem Server umbenennen und dann in einen Ordner auf einem anderen Server kopieren und dann die Datei in ein Unterverzeichnis verschieben.
Der Name der Datei soll das Datum JJMMTT enthalten.
Warum nennst Du dann erst eine Datei um und kopierst und verschiebst sie dann nicht, sondern alle anderen?
Sollte das nicht wie folgt aussehen?
ren s:\cdr660.txt
copy s:\14032018.txt i:\
move s:\14032018.txt s:\archiv\
Falls ja, dann sollte es insgesamt so aussehen:
@echo off
set neuername=%date:~0,2%%date:~3,2%%date:~6,4%.txt
ren \\aaa\cdr_Dateien\cdr660.txt %neuername%
copy \\aaa\cdr_Dateien\%neuername% \\bbb\Import\
move \\aaa\cdr_Dateien\%neuername% \\aaa\cdr_Dateien\archiv\
Gruß Frank
Hallo,
Hier scheint ja schon sein eklatanter Fehler zu stecken. Habe ich schon dem TO in vorgehender Antwort versucht zu sagen. Er soll schliesslich sein Script selbst erstellen und auch selbst Debuggen (können).
Er wird diese Dateinamenskonvention wohl nicht finden
Und hier ebenfalls nicht
Besser ein
Besser ein
Besser ein
Oder unser TO packt sich den Quellname und den Zielname in eine Variable und nutz die mit %Name% oder !Name!.
Sorry Frank.
Gruß,
Peter
Hier scheint ja schon sein eklatanter Fehler zu stecken. Habe ich schon dem TO in vorgehender Antwort versucht zu sagen. Er soll schliesslich sein Script selbst erstellen und auch selbst Debuggen (können).
copy s:\cdr_*.* i:\
move s:\cdr_*.* s:\archiv\
Sollte das nicht wie folgt aussehen?
Hier fehlt das Ziel wohin oder in welchen Namen kopiert werden soll.ren s:\cdr660.txt
@echo off
Ist zum debuggen nicht geeignet. Besser ein Echo ON oder weglassenren \\aaa\cdr_Dateien\cdr660.txt %neuername%
ren \\aaa\cdr_Dateien\cdr660.txt cdr_%neuername%.txt
copy \\aaa\cdr_Dateien\%neuername% \\bbb\Import\
copy \\aaa\cdr_Dateien\cdr_%neuername%.txt \\bbb\Import\
move \\aaa\cdr_Dateien\%neuername% \\aaa\cdr_Dateien\archiv\
move \\aaa\cdr_Dateien\cdr_%neuername%.txt \\aaa\cdr_Dateien\archiv\
Oder unser TO packt sich den Quellname und den Zielname in eine Variable und nutz die mit %Name% oder !Name!.
Sorry Frank.
Gruß,
Peter
Hallo,
Und was war es? Magst du deinen (betreffenden) Code hier für die Nachwelt reinstellen?
Gruß,
Peter
Und was war es? Magst du deinen (betreffenden) Code hier für die Nachwelt reinstellen?
Es klappt jetzt und alle sind glücklich und zufrieden.
Schön, und wenn du bitte noch einen grünen Balken dran machst Wie kann ich einen Beitrag als gelöst markieren?Gruß,
Peter
Hallo,
Da ist sehr oft das @echo Off dran schuld
Gruß,
Peter
Da ist sehr oft das @echo Off dran schuld
Gruß,
Peter