Batch Server - robocopy

Dabei seit
Feb. 2018
Beiträge
6
#1
2018-02-26 15_36_40.jpg

Hi :D

Ich möchte mithilfe von robocopy (noch zum Testen im Temp Ordner) Dateien von einem Server auf den anderen kopieren. Das Problem: Die Logdatei soll "robocopy-%Quelle%-%Datum%-%Zeit%.log heißen. Die Logdatei wird meistens entweder gar nicht oder im falschen Format erstellt egal wie ich mich herumspiele. Ich glaube, dass das daran liegt, dass in Dateinamen gewisse Sonderzeichen, wie eben / und \ nicht vorkommen dürfen. Wie schaffe ich es, dass mir die Quelle im Logdateinamen wenigstens zB mit "-" statt "" hingeschrieben wird?

Bin noch recht neu in dem Bereich, da ich vor kurzem erst ne Lehre begonnen hab :)
Bitte um Hilfe und danke schon mal für die Hilfe,
LG Ju
 
Dabei seit
Apr. 2009
Beiträge
1.459
#2
... setz es mal in Anführungszeichen
... beschäftige dich mit Powershell
... und gebe bei Ordnern im Robocopy immer den trimend \ befehl mit, auch wenn du es hier richtig machst, weil sonst kann das zu bösen Fehlern führen

p.s.: beim Powershell fehlt /r und /w.

die Default Werte für R und W sind 1.000.000 und 30 Sekunden, d.h. dein Job läuft theoretisch gesehen bis zu 500.000 Minuten....
 
Zuletzt bearbeitet:
Dabei seit
Nov. 2010
Beiträge
806
#3
Habs jetzt mal auf altbacken art gemacht, gleicher Effekt wie bei dir nur deutlich kürzer oder gibt es spezielle Gründe wieso du die Zeit setzt welche sowieso schon hinterlegt ist?


cd C:\Temp\Quelle

xcopy C:\Temp\Quelle\*.* C:\Temp\Ziel\*.* /s /e /f

cd C:\Temp\Ziel

ren "C:\Tmep\Ziel\log.log" logname-%date%-%time%.log

EDIT:
Hier noch die kurze Erläuterung:
Zuerst wechseln in die Quelle
Dann kopieren von der Quelle ins Ziel mit versteckten Daten etc.
nun wechseln ins Ziel (könnte man auch weglassen)
und dann umbenennen des Logfiles mit Datum und Zeit :)
 
Zuletzt bearbeitet:
Dabei seit
Apr. 2009
Beiträge
1.459
#4
xcopy ist mist verglichen mit robocopy.

Außerdem bezweifel ich, dass deine Befehle funktionieren, die Anführungszeichen sind ja schon falsch gesetzt oder?
 
Dabei seit
Nov. 2010
Beiträge
806
#5
Naja für die benötigte Funktion sollte dies ausreichen..

Danke für den Hinweis.. Hatte ein " vergessen.. könnte man aber auch weglassen.. wird ja erst nötigt wenn man mit abständen in den Ordnerstrukturen arbeitet..
 

itami_aka_ju

Newbie
Ersteller dieses Themas
Dabei seit
Feb. 2018
Beiträge
6
#6
Okay danke soweit hab ichs schonmal verstanden :)

das problem ist ich muss mich an gewisse "Vorschriften" halten. Das ganze ist eine Aufgabe für unsren neuen Server von unserem Werkstättenleiter der jetzt leider 2 Wochen nicht da ist und deswegen fuckt mich das ganze schon etwas ab weil ich zurzeit keinen da hab der mir das gut erklären kann bzw mir helfen kann dabei. Ich will ja auch gern verstehen was ich da mache sonst würd ich die Lehre nicht machen :D

Hier mal ein Bild von der Aufgabe:
2018-02-27 07_54_10-S__.jpg
(ich habe zusätzlich noch einen Ordner C:\Temp\Logfile wo das Logfile hingespeichert werden soll)

Das Batchfile sollte so gemacht werden, dass falls wir es nochmal für was anderes verwenden, wir nur bei den Variablen die Quelle und das Ziel zB ändern müssen.
 

itami_aka_ju

Newbie
Ersteller dieses Themas
Dabei seit
Feb. 2018
Beiträge
6
#8
schon versucht, ändert leider nichts. es wird trotzdem falsch ausgeführt :/ ich muss es irgendwie schaffen, dass wenn die logdatei erstellt wird schon die Quelle hingeschrieben wird aber statt "" "-" oder sowas sind. Ich glaube eben, dass der "Logdateiname" dran schuld ist, weil Zeichen enthalten sind, mit denen man normalerweise keine Datei abspeichern kann.
 

itami_aka_ju

Newbie
Ersteller dieses Themas
Dabei seit
Feb. 2018
Beiträge
6
#10
@echo off
echo robocopy Copy-Job von Anna auf neuen Server
echo.

REM Hier wurden die Variablen erstellt
REM Die Ordner wurden auch erstellt mit Unterordner



set Quelle=C:\Temp\Quelle
echo Quelle: %Quelle%

set Ziel=C:\Temp\Ziel
echo Ziel: %Ziel%

set Datum=%date:~-4%%date:~-7,2%%date:~-10,2%

set Zeit=%time:~0,2%%time:~3,2%

set Logfile=/Log:C:\Temp\Logfile\robocopy-%Quelle%-%Datum%-%Zeit%.log
echo Logfile: %Logfile%

set Parameter=/e /MIR /np



REM robocopy wird ausgeführt
robocopy %Quelle% %Ziel% %Parameter% %Logfile%
echo.

:: echo %date:~-4%%date:~-7,2%%date:~-10,2%
:: echo %time:~0,2%-%time:~3,2%

echo.
pause

Sry
 
Dabei seit
Apr. 2009
Beiträge
1.459
#11
so würds gehen

@echo off



set quelle=C:\Temp2\Quelle
set quelle_tmp=%quelle::=%
set quelle_tmp=%quelle_tmp:\=-%
echo Quelle: %quelle%
echo Quelle_tmp: %quelle_tmp%


set ziel=C:\Temp2\Ziel
echo Ziel: %ziel%



set datum=%date:~-4%%date:~-7,2%%date:~-10,2%
echo Datum: %datum%

set zeit=%time:~0,2%%time:~3,2%
echo Zeit: %zeit%

set logfolder=C:\temp2\logfile\

if not exist %logfolder% mkdir %logfolder%

set logfile=/log:%logfolder%robocopy-%quelle_tmp%-%datum%-%zeit%.log
echo Logfile: %logfile%

set parameter=/e /MIR
echo Parameter: %parameter%

robocopy %quelle% %ziel% %parameter% %logfile%
 

itami_aka_ju

Newbie
Ersteller dieses Themas
Dabei seit
Feb. 2018
Beiträge
6
#12
Vielen Dank! Sieht eigentlich nicht schwer aus :o Ich merk zwar wenn ich den Code lese, was eben gemacht wird aber ich versteh nicht ganz wieso^^'

Kannst du mir
set quelle_tmp=%quelle::=%
set quelle_tmp=%quelle_tmp:\=-%

erklären?

Ich hab das jetzt mal n bisschen getestet und alles geht bis auf ein Detail. Das Logfile speichert er ab als:
"robocopy-C-Temp2-Quelle-20180228-"
Das Datum ist da aber die Zeit nicht :( Mit dem Bindestrich hört der Name einfach auf

Ich hab mich auch ein klein wenig herumgespielt und getestet aber es ist ja alles richtig an dem Code , oder?
 
Dabei seit
Apr. 2009
Beiträge
1.459
#13
Ja das liegt daran, wie Batch die %TIME% ausgibt... den Teil hatte ich ja einfach übernommen.

So würds gehen

Code:
@echo off



set quelle=C:\Temp2\Quelle
set quelle_tmp=%quelle::=%
set quelle_tmp=%quelle_tmp:\=_%
echo Quelle: %quelle%
echo Quelle_tmp: %quelle_tmp%


set ziel=C:\Temp2\Ziel
echo Ziel: %ziel%



set datum=%date:~-4%%date:~-7,2%%date:~-10,2%
echo Datum: %datum%

set zeit=%time:~0,2%%time:~3,2%
if "%zeit:~0,1%" == " " set zeit=0%zeit:~1,3%

echo Zeit: %zeit%

set logfolder=C:\temp2\logfile\

if not exist %logfolder% mkdir %logfolder%

set logfile=/log:"%logfolder%robocopy-%quelle_tmp%-%datum%-%zeit%.log"
echo Logfile: %logfile%

set parameter=/e /MIR
echo Parameter: %parameter%

robocopy %quelle% %ziel% %parameter% %logfile%
Wegen deiner Frage zum Thema

set quelle_tmp=%quelle::=%
set quelle_tmp=%quelle_tmp:\=_%

https://ss64.com/nt/syntax-replace.html

Damit ersetzt mal Zeichen
 
Top