patsrv 10 Geschrieben 18. Juni 2009 Melden Teilen Geschrieben 18. Juni 2009 Hallo, Ich lasse eine Produktion mit mehreren Batchfiles laufen die verschiedenste Sachen erledigen. Das letzte davon soll mir per Mail einen Bericht schicken... was es auch tut nur leider stimmt der bericht nur wenn ich das Batchfile direkt aufrufe, also daraufklicke oder per geplantemtask. Wenn ich allerdings das batchfile in einem anderen batchfile calle (zuerst passieren noch andere schritte) dann haut das nicht hin: ... echo -------------------------------------------- >> report.txt echo ###(1.)### DATEN ######### >> report.txt echo -------------------------------------------- >> report.txt echo. >> report.txt FOR /F "delims= " %%i in ('Dir cases\downloads\JJ*.xml /s /A-D^|find "Datei(en)" ') do set nrorg=%%i set /a a = %nrorg% +1 IF %a% EQU 1 (echo OGH: 0 >> report.txt) ELSE (echo OGH: %nrorg% >> report.txt) FOR /F "delims= " %%i in ('Dir cases\downloads\JF*.xml /s /A-D^|find "Datei(en)"') do set niorg=%%i set /a b = %niorg% +1 IF %b% EQU 1 (echo VfGH: 0 >> report.txt) ELSE (echo VfGH: %niorg% >> report.txt) FOR /F "delims= " %%i in ('Dir cases\downloads\JW*.xml /s /A-D^|find "Datei(en)"') do set noorg=%%i set /a c = %noorg% +1 IF %c% EQU 1 (echo VwGH: 0 >> report.txt) ELSE (echo Vwgh: %noorg% >> report.txt)... Die Datei soll zählen wie viele Dateien mit gewissen Namensanfängen sich in einer Verzeichnisstruktur befinden. Wie gesagt bei direktem Aufruf ist alles klar, aber bei Aufruf aus einem anderen batch da sagt er mir: Der Befehl "find" ist entweder falsch geschrieben oder konnte nicht gefunden werden. Hat einer eine Idee dazu ?! BTW: Ich habe den Code zum suchen (FOR /F "delims= " %%i in ('Dir cases\downloads\JJ*.xml /s /A-D^|find "Datei(en)" ') do set nrorg=%%i) aus dem Netz und frage mich was dieses ^|find "Datei(en)" überhaupt soll...kann mir da einer Helfen ?! Bitte lest auch das Stück Text durch auch wenn es einwenig länger ist :-) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 18. Juni 2009 Melden Teilen Geschrieben 18. Juni 2009 hi, probier mal am Anfang der batch eine Definition zu setzen set find = %systemroot%\system32\find.exe im Code ersetze das find durch %find% cu blub Zitieren Link zu diesem Kommentar
patsrv 10 Geschrieben 19. Juni 2009 Autor Melden Teilen Geschrieben 19. Juni 2009 Danke für deine Antwort... Jetzt schreibt er das er den Befehl "JJ*.xml" nicht finden kann...dazu ist zu sagen das ich den Code leicht abgeändert habe: (gepostet ist nur die Änderung) ... FOR /F "delims= " %%i in ('Dir cases\downloads\ /s /A-D^|find "JJ*.xml" ') ... Es ist auch zu bemerken das ich nur Probleme mit dem externen Aufruf habe wenn ich im aufrufenden batchfile auch noch andere Batchfiles calle...tue ich das nicht funktioniert es (mit dem original Code) Zitieren Link zu diesem Kommentar
patsrv 10 Geschrieben 19. Juni 2009 Autor Melden Teilen Geschrieben 19. Juni 2009 Bin gerade darauf gekommen das es mit dem externen Aufruf nur nicht klappt wenn in dem aufrufenden file auch andere batches gecalled werden, die auch externe batches callen (das ist zumindest die einzige gemeinsamkeit die ich finden konnte) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 19. Juni 2009 Melden Teilen Geschrieben 19. Juni 2009 probier mal die Aufrufe mit "Start" bzw "Start /B" am Beginn der betreffenden Zeile cu blub Zitieren Link zu diesem Kommentar
patsrv 10 Geschrieben 22. Juni 2009 Autor Melden Teilen Geschrieben 22. Juni 2009 Danke für den Tipp ! Das Problem nun: Wenn ich nur start mache dann warten die .bat nicht aufeinander, also es werden alle nach der Reihe gestartet. Also habe ich es mit start /B /WAIT versucht, da wird aber überhaupt nur das 1. ausgeführt :( Gibts noch weitere Ideen ?! Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 22. Juni 2009 Melden Teilen Geschrieben 22. Juni 2009 Moin, es ist ein wenig zielloses Rumgestochere, wenn wir deinen Code nur rudimentär kennen. Wie rufst du denn die anderen Batches auf? Und wie beenden die sich? In einer vergleichbaren Situation hatte ein Kunde mal am Ende seiner Batches immer "exit" stehen und wunderte sich, dass der steuernde Batch nicht weiterlief - konnte er aber gar nicht, denn "exit" beendet den Kommandoprozessor. Gruß, Nils Zitieren Link zu diesem Kommentar
patsrv 10 Geschrieben 22. Juni 2009 Autor Melden Teilen Geschrieben 22. Juni 2009 Okay, fürs erste scheint das Prob gelöst: Ich habe die jetzt alle statt mit call mit start /B /WAIT aufgerufen und in die .bats ein exit eingefügt. Mal sehen wie das morgen funktioniert wenn das über den geplanten Task aufgerufen wird. *hoffedasdasfunzt* Danke an alle ! PS:bitte noch nicht closen denn wenn das morgen wieder nicht funktioniert geht das Problem weiter -.- Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 22. Juni 2009 Melden Teilen Geschrieben 22. Juni 2009 Hm, wenn du "exit" einfügst, dürfte es gerade scheitern, weil dann der ganze CMD-Prozessor beendet wird ... Gruß, Nils Zitieren Link zu diesem Kommentar
patsrv 10 Geschrieben 22. Juni 2009 Autor Melden Teilen Geschrieben 22. Juni 2009 Nunja ich habe das .bat das alle anderen aufruft gerade händisch gestartet und es hat wunderbar geklappt :/ Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 22. Juni 2009 Melden Teilen Geschrieben 22. Juni 2009 PS:bitte noch nicht closen denn wenn das morgen wieder nicht funktioniert geht das Problem weiter -.- Hallo Patsrv Wir Closen Beiträge nur in Ausnahmefällen, wenn z.B. ein Beitrag gegen unsere Boardregeln verstösst oder ein Support offensichtlich sinnlos ist. Im zweiten Fall gibts vor dem Close mindestens einen deutlichen Wink mit dem Zaunpfahl von einem Moderator. Deine Fragen sind absolut ok cu blub Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 22. Juni 2009 Melden Teilen Geschrieben 22. Juni 2009 Moin, Nunja ich habe das .bat das alle anderen aufruft gerade händisch gestartet und es hat wunderbar geklappt :/ ach, klar, du rufst die ja mit "start" auf. Das dürfte neue Instanzen des Prozessors starten. Solltest du weiter Probleme haben, wird weiteres Troubleshooting aber nur mit dem Code sinnvoll sein. Gruß, Nils Zitieren Link zu diesem Kommentar
patsrv 10 Geschrieben 23. Juni 2009 Autor Melden Teilen Geschrieben 23. Juni 2009 Okay, das Problem weshalb ich den thread geöffnet habe scheint gelöst, jedoch gibt es ein andere in dem zusammenhang. Ich sagte ja schon das das ganze über einen geplanten Task aufgerufen wird. Was passiert ist folgendes. Das ganze sollte eigentlich bis zu 3 Tage dauern, ich bekomme aber schon nach ca. 5 min eine mail das der Prozess abgeschlossen ist. Wenn ich die Ordner und logs durchschaue sieht es so aus als ob so gut wie nix passiert wäre - um genau zu sein wird das 1. .bat bis zur Häflte ausgeführt (so scheint es) und danach geht irgendetwas schief (ich konne im .bat keinen Grund dafür finden) Weil das 1. bat seine arbeit nicht vollständig verrichtet machen die anderen nichts bis nur unsinn und so schlägt alles fehl. Das komische ist, wenn ich angemeldet bin während sich der task startet funzt alles wunderbar... Idee dazu ?! Falls ihr wirklich den Code von allen .bats wollt kann ich den gerne reinstellen, würde aber bisschen dauern da ich den zensieren müsste... Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 23. Juni 2009 Melden Teilen Geschrieben 23. Juni 2009 hallo, weisst du denn, an welcher Zeile Code er genau hängenbleibt? Sonst musst du entsprechnde Debuggingausgaben in ein Logfile rausschreiben. etwa: echo %time% <befehl> ausgefuehrt >> debug.log läufts die *.Bat durch, wenn du den Task unter deinem Account oder dem Systemaccount ausführen lässt? cu blub Zitieren Link zu diesem Kommentar
patsrv 10 Geschrieben 25. Juni 2009 Autor Melden Teilen Geschrieben 25. Juni 2009 Okay, hier das .bat das am Anfang Probleme macht. @echo off SET PATH=%PATH%;.;R:\Produktion\Tools\perl\bin echo ********************************** > log1.txt echo * Alte Dateien werden entfernt * >> log1.txt echo **********************************>> log1.txt rd /Q /s cases\downloads\ >> log1.txt mkdir cases\downloads\ >> log1.txt del /Q logs\*.txt >> log1.txt echo ************************************* >> log1.txt echo * Neue Daten werden vom FTP geladen * >> log1.txt echo ************************************* >> log1.txt ftp -v -s:technik\ftp_script.txt ip-adresse >> log1.txt echo ****************************** >> log1.txt echo * Neue Daten werden entpackt * >> log1.txt echo ****************************** >> log1.txt R:\Produktion\tools\unzip\unzip Jus* >> log1.txt R:\Produktion\tools\unzip\unzip Vfgh* >> log1.txt R:\Produktion\tools\unzip\unzip Vwgh* >> log1.txt move /Y J*.xml cases\downloads >> log1.txt exit Es scheint bis zum entpacken der Dateien alles hinzuhauen, danach steht im Logfile nichts mehr. Normalerweise wird da inflating: %dateiname% ausgegeben. In log1.txt seht ihr wie der log aussiehtdie Datei autom. ausgeführt wird und in log2.txt (gekürtzt weil zu groß) seht ihr wie sie aussieht wenn ich sie händisch ausführe. Idea anyone ?! log1.txt log2.txt Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.