midi66
Goto Top

Batch mit schleife hängt sich nach 10 Minuten weg

Bei einer Reihe von IF Abfragen hängt sich die schleife nach 5 Min weg oder wird nicht mehr ausgeführt

Hallo zusammen,

ich frage mit einer Batch auf einem Unixserver (steht aber nicht in unserem Haus) dateien ab. Wenn also eine bestimmte datei in einem Verzeichnist steht beginnt die Routine und kopiert etwas. Problem ist wahrscheinlich das die Batchschleife irgendwann im Cache landet und nicht mehr tatsächlich überprüft wird ob die Dateien da sind. Die Batch läuft auf nem NT-Rechner in einer Dosbox. Habe schon die Einstellungen der Dosbox geändert, in dem ich die Puffergröße auf 1 und Anzahl der Puffer auf 1 Gesetzt habe, auch der Befehlsstapel wird gelöscht. Wie kann ich verhindern, daß die batch irgendwann gecacht wird? Sie sieht so aus:

echo sngmTH
if exist sngmth.dat goto sngmth
echo sngmAB
if exist sngmab.dat goto sngmab
echo sngmGM
if exist sngmgm.dat goto sngmgm
echo sngmHS
if exist sngmhs.dat goto sngmhs
echo sngmPZ
if exist sngmpz.dat goto sngmpz
echo sngmMW
if exist sngmmw.dat goto sngmmw
echo sngmNR
if exist sngmnr.dat goto sngmnr
echo sngmMS
if exist sngmms.dat goto sngmms
echo sngmKL
if exist sngmKL.dat goto sngmKL
echo sngmAS
if exist sngmAS.dat goto sngmAS
echo.
echo.
echo.
tpause /T:00:00:03 " Type x for quit..." ,x
if errorlevel 1 goto exit

cls
goto start

Oder mache ich noch was anders falsch ???? Kann mir jemand helfen???
Danke schon mal im Voraus

Content-ID: 48380

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

Ausgedruckt am: 04.11.2024 um 18:11 Uhr

Metzger-MCP
Metzger-MCP 10.01.2007 um 10:08:33 Uhr
Goto Top
Ob du etwas Falsch machst, kann man nur dann sagen, wenn du die Komplette Batch postest. Wieso willst du denn eine Dauerschleife haben ? Mache doch einfach einen Cronjob ( geplanten Task ) der deine Batch im Minuten Takt einmal durchlaufen lässt. Das reduziert auf jeden Fall dein unnützen Netzwerktraffic enorm. Dann hast du wenigstens keine Cache Probleme. Oder sind das Daten die just in Time kopiert werden müssen ?

MFG Metzger
midi66
midi66 10.01.2007 um 10:20:18 Uhr
Goto Top
Hallo
erst mal danke für die Antwort, aber genau das ist das Problem. Ich muß die Daten just-in-time haben. Das ganze läuft so: Auf der Unixkiste wird eine Datei generiert. Die steht nun da und muß wenn sie erstellt ist irgendwie auf mein Netz. Um aber nicht ständig über DSL auf der Unixkiste zu gucken wird eine von einem WordMacro über eine batch eine anforderunsdatei auf die Nt-Kiste gestellt, und wenn die da ist gehe ich auf die unix-kiste und kopiere meine Datei auf mein netz und öffne sie dort in word. iss kompliziert aber ich weiß nich wie ich es anders lösen soll.

Hier die ganze batch:
@echo off
:start
cls
c:
cd\
cd transhcs
echo.
echo active:
echo.
echo sngmTH
if exist sngmth.dat goto sngmth
echo sngmAB
if exist sngmab.dat goto sngmab
echo sngmGM
if exist sngmgm.dat goto sngmgm
echo sngmHS
if exist sngmhs.dat goto sngmhs
echo sngmPZ
if exist sngmpz.dat goto sngmpz
echo sngmMW
if exist sngmmw.dat goto sngmmw
echo sngmNR
if exist sngmnr.dat goto sngmnr
echo sngmMS
if exist sngmms.dat goto sngmms
echo sngmKL
if exist sngmKL.dat goto sngmKL
echo sngmAS
if exist sngmAS.dat goto sngmAS
echo.
echo.
echo.
tpause /T:00:00:03 " Type x for quit..." ,x
if errorlevel 1 goto exit

cls
goto start
rem goto exit

:sngmTH
call c:\transhcs\trans_TH.bat
del c:\transhcs\sngmTH.dat
goto start

:sngmAB
call c:\transhcs\trans_AB.bat
del c:\transhcs\sngmAB.dat
goto start

:sngmGM
call c:\transhcs\trans_GM.bat
del c:\transhcs\sngmGM.dat
goto start

:sngmHS
call c:\transhcs\trans_HS.bat
del c:\transhcs\sngmHS.dat
goto start

:sngmPZ
call c:\transhcs\trans_PZ.bat
del c:\transhcs\sngmPZ.dat
goto start

:sngmMW
call c:\transhcs\trans_MW.bat
del c:\transhcs\sngmMW.dat
goto start

:sngmNR
call c:\transhcs\trans_NR.bat
del c:\transhcs\sngmNR.dat
goto start

:sngmMS
call c:\transhcs\trans_ms.bat
del c:\transhcs\sngmms.dat
goto start

:sngmKL
call c:\transhcs\trans_kl.bat
del c:\transhcs\sngmkl.dat
goto start

:sngmAS
call c:\transhcs\trans_as.bat
del c:\transhcs\sngmas.dat
goto start

:exit

die Trans_* kopiert erst die datei von der Unix-kiste auf mein netz.
miniversum
miniversum 10.01.2007 um 16:30:18 Uhr
Goto Top
Warum erzeugst du in vba eine Datei deren Existenz in der batch geprüft wird das sie loslaufen kann (habs doch so richtig verstanden oder?)? Starte doch gleich die Batch aus der Worddatei (vba) heraus, dann läuft sie ncith dauernt. Wenn du es dann noch anstatt der Datei einen bestimmten Namen zu geben als Kennung der Batch diese Kennung als Übergabeparameter gibst würde sich die Batch auch bischen verkürzen und die if Abfragen reduziert werden.

miniversum
midi66
midi66 10.01.2007 um 16:41:15 Uhr
Goto Top
Das mache ich deswegen, weil auf der Unix kiste ein veraltetes Fusion95 läuft und ich nur mit einem NT4 Rechner an die Daten komme. (oder weißt du was besseres) Die batch kann ich aber nicht direkt auf dem nT rechner im Fusion95 verzeichnis laufen lassen weil sie sonst zu viel trafic erzeugt. Die Unix-Kiste an einem anderem Standort über VPN angebunden.
Metzger-MCP
Metzger-MCP 11.01.2007 um 09:38:05 Uhr
Goto Top
Das heist doch also, nur wenn du Word öffnest lässt du nachgeschauen ob die Datein da sind.
Starte doch einfach die Batch einmalig ( wenn do Word öffnen möchtest ) , und rufe aus der Batch word auf.

MFG Metzger
midi66
midi66 11.01.2007 um 09:49:18 Uhr
Goto Top
Das ist aber nicht mein Problem. Wenn in Word das Macro gestartet wird, ist die Datei an einem definiertem Ort auf der Unix maschine. NUR: auf der Unix-Kiste läuft ein veraltetes Fusion95 (habe keinen einfuss darauf) und ich kann nur über einen einzigen Rechner, auf dem ein NT4 noch läuft, darauf zugreifen. Wenns ein Prog. gäbe, was auf Nt4 läuft und mir die Datei auf anforderung an einen Platz kopiert wärs ja gut. Kenne aber keins, daher die batches. Kann die Abfrage auch nicht ständig auf der Unixmaschine laufen lassen, da sie über DSL angebunden ist und mir sonst zuviel trafic produziert.
Metzger-MCP
Metzger-MCP 11.01.2007 um 15:46:43 Uhr
Goto Top
Ich habe das Gefühl wir hier nun irgendwie aneinander vorbei reden. Ich blicke nun nicht mehr wirklich durch, und weis nicht mehr wer warum was in welcher Reihenfolge wenn aufruft und und wen wohin kopiert. grumpf face-sad

@ midi66
Bitte schildere mir ( uns ) doch einmal genau wer was genau wann in welcher Reihenfolge macht.
Stelle dir dabei vor es gäbe keine Batchdatein und du müßtest alles von Hand machen, die Überprüfungen und so weiter.

z.b. Brötchen nehmen, Messer in die andere Hand nehmen, Messer auf Brötchen aufsetzten und anschliessend aufschneiden, Messer aus der Hand legen, die obere Brötchenhälfte mit der freien Hand abheben ...

1. Die Unixkiste generiert das File "XYZ" und legt es bei sich ab.
.
.
.

Ich habe ja verstanden das Fusion95 eine Software ist, die auf eine Unixkist läuft und dort das "oos Filsystem" der Windowswelt per TCPIP zugänglich macht, und nur deine NT4 Kiste darauf zugriff hat.

Mfg Metzger

p.s. Entschuldige bitte meine Verwirrung.
midi66
midi66 11.01.2007 um 16:11:43 Uhr
Goto Top
@ Metzger

Kein Problem, also:
Auf unix entsteht ein File, das mit Word weiter verarbeitet werden soll. Der gleiche User der das File unter Unix erstellt hat, soll es mit word aufrufen und weiterverarbeiten.

Der Weg:
1. Datei wird auf Unix-kiste erstellt
2. In word wird ein Macro ausgeführt
Dieses Macro Stellt als Signal dafür das die Datei abgeholt werden soll ein File "losjetzt" an einen ort. und wartet dann
derzeit 10sec. bis datei da ist. wärend dessen:
Eine Batch (sucher) erkennt "losjetzt" als aufforderung an einem bestimmten Ort die auf unix erstellte Datei in ein bestimmtes Verzeichnis zu kopieren. Danach löscht sie "losjetzt" und wartet auf das nächste "losjetzt".
Problem dabei ist eigentlich nur das sich meine Batch "sucher" die ständig auf der "nt-kiste" läuft wahrscheinlich im cache tot rennt. Dh. sie guckt garnicht mehr und stellt auch nicht mehr fest das schon längst eine neue "losjetzt" da ist.

Mfg Midi66
bastla
bastla 12.01.2007 um 02:00:21 Uhr
Goto Top
Hallo midi66!

Wenn ich Dich richtig verstehe, sind eigentlich 3 Recher beteiligt: das Unix-System, ein Rechner für Word und die NT-Maschine als "Vermittler" dazwischen - richtig?

Wenn ja, könnte die Lösung (wie im Prinzip schon von Metzger-MCP vorgeschlagen) mittels einer Batchdatei auf dem "Word-Rechner" erfolgen. Dieser Batch müsste

  • auf dem NT-Rechner das Abholen der Datei starten (als Werkzeug dafür gibt es zB PsExec),
  • (nach einer Pause) die abgeholte Datei vom NT-Rechner auf den "Word-Rechner" kopieren / verschieben bzw dies wie gehabt ebenfalls vom NT-Rechner machen lassen und
  • (ev nach einem weiteren kurzen "sleep") die Datei auf dem "Word-Rechner" mit Word öffnen.

Oder liege ich mit meiner Interpretation auch falsch?

Grüße
bastla
midi66
midi66 12.01.2007 um 08:10:57 Uhr
Goto Top
Hallo bastla,

Du hast recht, genau so sollte es gehen und wird es im prinzip ja jetzt auch gemacht. Das Prog. PsExec kannte ich nicht. Werde mal schauen ob es mein problem löst. Zunächst mal hab ich ja jetzt wieder was zu "basteln". Auf jeden Fall schon mal ein großes Danke für den Tipp melde mich wieder

Grüße
midi66
Biber
Biber 10.02.2007 um 11:43:05 Uhr
Goto Top
Danke für den Tipp melde mich wieder..

Okay, dann warten wir einfach ein paar Tage...

Gruss
Biber
midi66
midi66 12.02.2007 um 08:01:16 Uhr
Goto Top
Hey das hat ganz gut geklappt mit dem PsExec. Hat zwar was gedauert bis ich es ans rennen bekommen habe, aber es klappt und ich brauche meine Batch- Schleife nicht mehr. Damit hat sich mein Problem mit der Batch erledigt. Nochmals vielen vielen Dank für die schnelle Hilfe.

midi66