pepper
Goto Top

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... face-sad

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

Content-Key: 367908

Url: https://administrator.de/contentid/367908

Printed on: April 24, 2024 at 20:04 o'clock

Member: Pjordorf
Pjordorf Mar 13, 2018 at 13:27:34 (UTC)
Goto Top
Hallo,

Zitat von @Pepper:
Ich muss eine Datei auf dem Server umbenennen
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ügen

und dann die Datei in ein Unterverzeichnis verschieben.
Auf den Zielsystem anmelden, Explorer öffnen, Datei suchen und verschieben mittels Rechtsklick

Der 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
Member: Pepper
Pepper Mar 13, 2018 at 13:33:28 (UTC)
Goto Top
Oh Mann, ich sage doch, ich habe eine Blockade... face-smile
Ich meinte natürlich als Batch -Datei, die ich dann Nachts laufen lassen kann... *facepalm*
Member: Pjordorf
Pjordorf Mar 13, 2018 at 13:40:15 (UTC)
Goto Top
Hallo,

Zitat von @Pepper:
Ich meinte natürlich als Batch -Datei, die ich dann Nachts laufen lassen kann...
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
Member: Pepper
Pepper Mar 13, 2018 at 14:32:53 (UTC)
Goto Top
Ich bin noch gar nicht weiter.

Es handelt sich um Windows 2012 R2 Server.
Das Batch soll mit administrativen Rechten als geplanter Task laufen.
Die Datei soll einmal pro Nacht umbenannt und kopiert und verschoben werden.
Member: unauthorized-user
unauthorized-user Mar 13, 2018 at 14:41:22 (UTC)
Goto Top
Hallo,

du kannst mit Move *Pfad* und ren *Datei* die Datei verschieben und umbenennen.

ren Ausgangsdatei.txt Umbenennen.txt
move C:\\Documents\umbennenen.txt \\123.213.123.12\Test

Hoffe das hilft dir schon mal weiter.
Member: Pjordorf
Pjordorf Mar 13, 2018 at 15:43:00 (UTC)
Goto Top
Hallo,

Zitat von @Pepper:
Ich bin noch gar nicht weiter.
Und? Wie weit bist du den nun? Überhaupt angefangen? face-smile
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%  
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
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
Member: Pepper
Pepper Mar 14, 2018 at 08:10:51 (UTC)
Goto Top
Folgendes Batch habe ich mir jetzt zusammengeschustert:

@echo off
net use s: \\aaa\cdr_Dateien /persistent:no
net use i: \\bbb\Import /persistent:no
cd s:
ren s:\cdr660.txt s:\cdr_%date%-%time%.txt
copy s:\cdr_*.* i:
move s:\cdr_*.* s:\archiv\
net use i: /del /y
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.
Member: Pjordorf
Pjordorf Mar 14, 2018 at 13:25:24 (UTC)
Goto Top
Hallo,

Zitat von @Pepper:
Folgendes Batch habe ich mir jetzt zusammengeschustert:
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.

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
Member: Pepper
Pepper Mar 14, 2018 at 14:12:21 (UTC)
Goto Top
Ja, das wäre natürlich besser, wenn es JJMMTT wäre.

Hier kommt mal der Ablauf:

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.


cd s:
S:\

ren s:\cdr660.txt s:\cdr_14.03.2018.txt

copy s:\cdr_*.* i:
s:\cdr_*.*
0 Datei(en) kopiert.

move s:\cdr_*.* s:\archiv\

net use s: /del /y
s: wurde erfolgreich gelöscht.


net use i: /del /y
i: wurde erfolgreich gelöscht.
Member: Pjordorf
Pjordorf Mar 14, 2018 updated at 15:25:30 (UTC)
Goto Top
Hallo,

Zitat von @Pepper:
Ja, das wäre natürlich besser, wenn es JJMMTT wäre.
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.
Kein Fehler mehr?

net use i: \\bbb\Import /persistent:no
Der Befehl wurde erfolgreich ausgeführt.
Ebenfalls keinen Fehler mehr.

ren s:\cdr660.txt s:\cdr_14.03.2018.txt
Baue hier ein dir s:\cdr_*.txt und ein Pause mal ein.

copy s:\cdr_*.* i:
s:\cdr_*.*
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
Member: Pepper
Pepper Mar 14, 2018 at 15:59:19 (UTC)
Goto Top
C:\ProgramData\T-Com\cdr_Dateien>net use s: \\aaa\cdr_Dateien /persistent:no 
Der Befehl wurde erfolgreich ausgeführt.
Info: Da hatte ich noch nie Fehler

C:\ProgramData\T-Com\cdr_Dateien>net use i: \\bbb\Import /persistent:no 
Der Befehl wurde erfolgreich ausgeführt.
Info: Da hatte ich noch nie Fehler

C:\ProgramData\T-Com\cdr_Dateien>cd s: 
S:\

C:\ProgramData\T-Com\cdr_Dateien>ren s:\cdr660.txt 14032018.txt 
Info: Die Datei liegt da, ganz jungfräulich

C:\ProgramData\T-Com\cdr_Dateien>copy s:\cdr_*.* i:\ 
s:\cdr_*.* 
        0 Datei(en) kopiert.

C:\ProgramData\T-Com\cdr_Dateien>move s:\cdr_*.* s:\archiv\ 

C:\ProgramData\T-Com\cdr_Dateien>net use s: /del /y 
s: wurde erfolgreich gelöscht.


C:\ProgramData\T-Com\cdr_Dateien>net use i: /del /y 
i: wurde erfolgreich gelöscht.
Member: Pjordorf
Pjordorf Mar 14, 2018 at 16:29:45 (UTC)
Goto Top
Hallo,

Zitat von @Pepper:
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 selbst
Wenn ich die Batch ausführe (auf dem entsprechenden Server (aaa)), bekomme ich aber immer die Meldung, dass das Laufwerk nicht gefunden werden kann.
geschrieben? Und da drauf bezog sich meine Antwort.

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.

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 leere

C:\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.

C:\ProgramData\T-Com\cdr_Dateien>move s:\cdr_*.* s:\archiv\
Das gleiche wie oben

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
Member: Pedant
Pedant Mar 14, 2018 at 17:42:20 (UTC)
Goto Top
Hallo Pepper,

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 statt
copy 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.

Zitat von @Pepper:
ren s:\cdr660.txt 14032018.txt
copy s:\cdr_*.* i:\
move s:\cdr_*.* s:\archiv\
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
Member: Pjordorf
Solution Pjordorf Mar 14, 2018 at 18:28:48 (UTC)
Goto Top
Hallo,

Zitat von @Pedant:
ren s:\cdr660.txt 14032018.txt
Hier scheint ja schon sein eklatanter Fehler zu stecken. face-smile 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:\
Er wird diese Dateinamenskonvention wohl nicht finden

move s:\cdr_*.* s:\archiv\
Und hier ebenfalls nicht

Sollte das nicht wie folgt aussehen?
ren s:\cdr660.txt
Hier fehlt das Ziel wohin oder in welchen Namen kopiert werden soll.

@echo off
Ist zum debuggen nicht geeignet. Besser ein Echo ON oder weglassen

ren \\aaa\cdr_Dateien\cdr660.txt %neuername%
Besser ein
ren \\aaa\cdr_Dateien\cdr660.txt cdr_%neuername%.txt

copy \\aaa\cdr_Dateien\%neuername% \\bbb\Import\
Besser ein
copy \\aaa\cdr_Dateien\cdr_%neuername%.txt \\bbb\Import\

move \\aaa\cdr_Dateien\%neuername% \\aaa\cdr_Dateien\archiv\
Besser ein
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
Member: Pepper
Pepper Mar 15, 2018 at 13:41:22 (UTC)
Goto Top
Hi zusammen,

ich danke Euch für die Hilfe!
Die letzten beiden Posts haben mir die Augen geöffnet und die Lösung gebracht.
Es klappt jetzt und alle sind glücklich und zufrieden.

Vielen vielen Dank.

Gruß
Christian
Member: Pjordorf
Solution Pjordorf Mar 15, 2018 updated at 14:09:23 (UTC)
Goto Top
Hallo,

Zitat von @Pepper:
Die letzten beiden Posts haben mir die Augen geöffnet und die Lösung gebracht.
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 How can I mark a post as solved?

Gruß,
Peter
Member: Pepper
Pepper Mar 15, 2018 at 15:01:18 (UTC)
Goto Top
Dem komme ich gerne nach...

set neuername=%date:~6,4%%date:~3,2%%date:~0,2%.txt 

ren \\aaa\cdr_Dateien\cdr660.txt cdr_%neuername%

copy \\aaa\cdr_Dateien\cdr_%neuername% \\bbb\Import\
move \\aaa\cdr_Dateien\cdr_%neuername% \\aaa\cdr_Dateien\archiv\

Wie gesagt, ich habe echt wie ein Ochs vor dem Berg gestanden.
Irgendwie habe ich den Wald vor lauter Bäumen nicht mehr gesehen...

Viele Grüße
Christian
Member: Pjordorf
Pjordorf Mar 15, 2018 at 15:12:20 (UTC)
Goto Top
Hallo,

Zitat von @Pepper:
Irgendwie habe ich den Wald vor lauter Bäumen nicht mehr gesehen...
Da ist sehr oft das @echo Off dran schuld face-smile

Gruß,
Peter