snowhill
Goto Top

Kopieren via BAT-Datei und Geplanten Task

Folgendes Problem:

Über Nacht läuft ein Prozess der Daten auf ein Laufwerk bereit stellt. Dies geht leider nicht automatisch auf ein anderes da es über Unix läuft.

Jetzt zu meinem Problem:
- Die Daten befinden sich im Quellserver wobei lediglich die Auftragsnr sich verändert. z.b. 5123456_0001_0002
- Ein Auftrag ist komplett wenn die Datei 5123456_0001_0002.nwp vorhanden ist - erst dann dürfen die Dateien kopiert werden

Wie schaffe ich es das mir eine BAT-Datei die z.b. durch einen geplanten Task alle x Sekunden ausgeführt wird die unten angefügte copy.bat erstellt und die Auftragsnr. anhand der *.nwp - Datei an allen nötigen Stellen in der Datei richtig einfügt?

#################### copy.bat #########################
rem Quellserver
set SRVPATHSOURCE=\\server1\prod\auftrag
rem Zielserver
set SRVPATHDEST=\\server2\prod\Data

robocopy %SRVPATHSOURCE%\auftrag\5123456_0001_0002\ %SRVPATHDEST%\5123456_0001_0002\ *.* /E /ZB
robocopy %SRVPATHSOURCE%\auftrags_cd\konst\ %SRVPATHDEST%\konst\ *.* /E /ZB
robocopy %SRVPATHSOURCE%\auftrags_cd\TRANSAS\ %SRVPATHDEST%\TRANSAS\ *.* /E /ZB
robocopy %SRVPATHSOURCE%\merge\ %SRVPATHDEST%\merge\ 5123456_0001_0002.txt /E /ZB


robocopy %SRVPATHSOURCE%\order\ %SRVPATHDEST%\order\ 5123456_0001_0002.nwp /E /ZB
###################################################
Vielen Dank für die Hilfe

Content-Key: 71692

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

Ausgedruckt am: 29.03.2024 um 04:03 Uhr

Mitglied: Biber
Biber 23.10.2007 um 19:11:03 Uhr
Goto Top
Moin snowhill,

beim besten Willen... kann es sein, dass bei Euch in der Firma noch gewisse Potentiale zur Prozessausgestaltung und zur Ablaufoptimierung gegeben sind?

Es macht auf mich nicht den Eindruck, dass sich dort mit einem Batch große Schneisen in gewucherte Datenverknotungen schlagen lassen.

Dennoch würde ich auch dabei natürlich trotzdem helfen, aber ich hab es erstens nicht verstanden und kann zweitens auch nicht nachvollziehen, was der Robocopy-Batch da treibt.
Bitte nochmal langsam:
  • die Daten liegen JETZT auf einer Windows-Maschin'?
  • in einer Verzeichnisstruktur "\\server1\prod\auftrag" ?
  • darunter geht es mit den Verzeichnissen "auftrag\5123456_0001_0002\", "auftrags_Cd" (mit 2 Subdirs), "merge" weiter?
  • wo liegt die *.nwp??
  • bleiben die Original-Dateien zusätzlich auf dem Quellserver, werden die gelöscht, archiviert, umbenannt?
  • was soll wie zu was zusammengesetzt werden, wenn die *.nwp-Datei da ist?

Sorry, ich habe Deine Beschreibung wirklich nicht ausreichend zum Drauflostippseln verstanden.

Grüße
Biber
Mitglied: snowhill
snowhill 23.10.2007 um 20:51:19 Uhr
Goto Top
1. Ja - es gibt noch etliches Potentiale zur Prozessausgestaltung und zur Ablaufoptimierung aber wenn der Chef Unix will - die CD-Vervielfältigungsmaschine aber nur Windows versteht kann man wenig machen. Deshalb diese komplizierte Kopiererei!

2. Die Daten liegen auf Unix sind aber über Samba von Windows aus zu erreichen

Quellserver
\\server1\prod\auftrag

Dort liegt auch die nwp-Datei im Ordner "order"

3. Die Original-Dateien werden jede Nacht automatisch erstellt und gelöscht.

4. Es soll so sein:

Gegeben ist:
Wenn der Auftrag komplett ist, erstellt ein Shellscript eine nwp-Datei. Diese Datei erkennt die CD-Vervielfältigungsmaschine und kopiert nun alle Daten auf CD auf die diese NWP-Datei hinweist. (Auftrag, merge, auftrags_cd, ...). Aber alles auf UNIX - was die Maschine nicht mag.

Ziel ist:
Das die Daten auf einen Windows-Fileserver kopiert werden. Aber dieses Kopieren macht der robocopy-batch. Das funktioniert - aber nur Händisch wenn ich die Auftragsnummern manuell eingebe. Er darf auch nicht einfach blind alles kopieren weil es erst klappt wenn der Auftrag komplett vorhanden ist. die NWP-Datei wird UNIX-seitig als letztes erstellt, d.h. das könnte das Startsignal für die Prozedur sein.

5. Die NWP-Datei heißt immer 5123456_0001_0002.nwp (nur die Nr. ist anders) und die veränderte Zahl könnte dann in die copy.bat eingefügt werden.

Vielen Dank das du dir überhaupt die mühe machst

Grüße

snowhill
Mitglied: Biber
Biber 23.10.2007 um 21:33:11 Uhr
Goto Top
Also gut, snowhill,
versuchen wir uns mal heranzutasten...

Wenn es wirklich so ist, dass der Name der *.nwp-Datei wirklich die einzige Variable in dem ganzen *nach-Worten-ring*....Ablauf ist, dann sehe ich eigentlich nur noch zwei Randbedingungen, die ich im Auge behalten würde:
  • dieses angedeutete "alle x Sekunden über Taskmanager starten"... ist zwar das geringste Problem, aber: ist es nötig und sinnvoll? Ist eine *.nwp-Datei (mit allem, was da dranhängt) auch ein CD-Vervielfältigungsauftrag, der sofort weitere Prozessschritte auflöst? Oder wird eher am Ende eines 6-Stundenzeitraums oder so alles aufgelaufene eingesammelt und dann weiterverarbeitet?
  • und das zweite - irgendwie sollte man/frau ja sicherstellen, dass die Datenklumpen, die der Robocopy schon einmal erfolgreich umgeschaufelt hat beim nächsten Programmstart nicht noch einmal angefasst werden. Ich würde also den Robo-Krams noch um eine Zeile erweitern, die den Namen der *.nwp-Datei an eine Logdatei dranhängt. Und kopieren eben nur, wenn die auf dem Server "gefundene" *.nwp-Datei dort nicht erwähnt wird.

Also bleiben doch nur
  • das Finden einer *.nwp-Datei auf \\server1\prod\auftrag
  • den Namen davon (ohne .nwp) als Variable weiterverwenden im bisherigen Robobatch.

Wenn wir den als Basis nehmen (und davon ausgehen, den starten wir alle x Sekunden über den Taskplaner:
::---snipp nwpSauger.bat
@echo off & setlocal

#################### copy.bat #########################
rem Quellserver
set SRVPATHSOURCE=\\server1\prod\auftrag
rem Zielserver
set SRVPATHDEST=\\server2\prod\Data
for /f "delims=" %%i in ('dir %SRVPATHSOURCE%\*.nwp /b /s') do call :ProcessNWP "%%~ni"  
goto :eof

:ProcessNWP
find "%~1" \\irgeneinShare\AllekopiertenNWPs.log >nul && goto :eof  
robocopy %SRVPATHSOURCE%\auftrag\%~1\ %SRVPATHDEST%\%~1\ *.* /E /ZB
robocopy %SRVPATHSOURCE%\auftrags_cd\konst\ %SRVPATHDEST%\konst\ *.* /E /ZB
robocopy %SRVPATHSOURCE%\auftrags_cd\TRANSAS\ %SRVPATHDEST%\TRANSAS\ *.* /E /ZB
robocopy %SRVPATHSOURCE%\merge\ %SRVPATHDEST%\merge\ %~1.txt /E /ZB


robocopy %SRVPATHSOURCE%\order\ %SRVPATHDEST%\order\ %~1.nwp /E /ZB
###################################################
if Not Errorlevel 1 echo %~1>>\\irgeneinShare\AllekopiertenNWPs.log

So wäre der erste Wurf.

Aber sinnvoller als ein einsamer Batch wäre es eventuell, mit deinem Cheffe mal ein Becks zu trinken...

Gruß

Biber
Mitglied: snowhill
snowhill 24.10.2007 um 15:09:04 Uhr
Goto Top
Du bist ein Held!!!

Sehr gut Programmiert und beschrieben.
Funktioniert alles wie ich mir das vorstelle.

Vielen Dank.

snowhill