Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Aus Lisp ein BAT starten und darauf warten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Aus Lisp ein BAT starten und darauf warten (1891 mal gelesen)
Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 13. Dez. 2010 12:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Gibt es eine Möglichkeit, aus Lisp eine BAT-datei zu starten und auf deren Fertigstellung zu warten?

Hintergrund:
- Scriptverarbeitung von Zeichnungen, und die laufen im (ca.) 4 sec Takt
- in diesem Script läuft ein Lisp, dass alles mögliche macht, unter anderem eine Batch-datei erstellt, also ungefähr

Code:
(princ "convert.exe a.doc a-neu.doc -x -y - blabla -ding -dong" -> c:\a_conv.bat)

- wenn das Lisp fast fertig ist, wird der Batch aufgerufen
Code:
(startapp c:\a_conv.bat)

Problem:
- der BAT hat eine ungewisse Laufzeit, aber meistens dauert es länger als der 4 sec Takt
- damit komme ich in das Problem, dass Batch "A" noch nicht fertig ist, wenn Batch "B" gestartet wird
- usw.

Daher meine Frage wie oben:
- kann ich BAT nicht nur starten, sondern auch das Endergebnis abwarten und dann darauf reagieren (Ergebnis OK: starte nächste Zeichnung; nicht OK: sende Meldung)
- eine fixe Wartezeit ("wait 10000 msec") möchte ich nicht nehmen, dass ist zu Holzkeulenmässig und zu wackelig
- es könnte der BAT am Schluss ein File erzeugen ("c:/bin_fertig.log") und AutoCAD 10 sec im Sekundentakt prüfen (if exist "bin_fertig.log" then weiter else "warte 1 sec und suche nocheinmal"). Aber derzeit sieht mir das nicht so wahnsinnig berauschend aus ...

bessere Ideen?
You're welcome!

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 13. Dez. 2010 12:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

ne, mit warten lassen wird das nichts, da bat und Lisp in 2 unterschiedlichen Umgebungen laufen .... kommunizieren könnten beide evtl. über Enviroment-Variablen oder Dateien... also die Bat erstellt als letzte aktion eine.... und das lisp rotiert in einer while schleife, bis die datei gefunden wurde und macht dann weiter

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 13. Dez. 2010 13:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

  
Zitat:
Original erstellt von CADmium:
.... und das lisp rotiert in einer while schleife, ...

krawuzi-kapuzi   

Und wie kann ich AutoCAD motivieren, nicht mit Vollgas zu rotieren und was zu suchen, was es noch nicht gibt ...

Peter


Edit: Vielleicht brauche ich gar kein BAT, sondern kann mit

Code:
(startapp "convert.exe a.doc a-neu.doc -x -y - blabla -ding -dong"

direkt starten? (Muss ich später ausprobieren).
Aber löst das das "Warte- und Überwachungsproblem"?

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

[Diese Nachricht wurde von Peter2 am 13. Dez. 2010 editiert.]

[Diese Nachricht wurde von Peter2 am 13. Dez. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 13. Dez. 2010 14:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo Peter,
HIER gibt's die Funktion "RUNAPP". Die warten auf die Beendigung des aufgerufenen Programms

Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 13. Dez. 2010 14:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo Peter,
auch ich habe schon das Thema gehabt und habe es folgendermaßen gelöst: Ich benenne die auszuführende Datei um, führe Sie dann aus und laß eine While-Schleife hinterherlaufen, die solange läuft, bis die Datei wieder in Ihren ursprünglichen Namen umbenannt werden kann. Zudem läuft ein Indexzähler mit (im Beispiel bis 400000) damit darüber ein Notausstieg aus der While-Schleife erfolgen kann, wenn die Datei nicht mehr umbenannt werden kann. Sicherlich nicht sehr elegant, aber bisher habe ich damit arbeiten können.
Code:

;;;file z.B. c:\\temp\\machwas.bat
(defun RunAndWait (file / )
  (if
    (vl-file-rename file
      (setq WorkingFile(strcat
                         (car (fnsplitl file))
                         (cadr (fnsplitl file))"_Working"
                         (caddr (fnsplitl file)))))
    (progn
    (startapp WorkingFile)

    (setq n 1)
    (princ (strcat "\nDatei arbeitet: (" (itoa n) ")"))
    (princ)
    (while (and (< (setq n (+ n 1))400000)
                (not (vl-file-rename WorkingFile file)))
      (princ (strcat "\nDatei arbeitet: (" (itoa n) ")"))
      (princ))
    (if (>= n 400000)
      (alert "Da ist was schiefgegangen")
      (alert "Hat alles funktioniert.")))))


PS:

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

  Stammtisch in Wolfsburg im Januar 2010 

[Diese Nachricht wurde von joern bosse am 13. Dez. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Geos
Mitglied
Vermessungstechniker i.R.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 13. Dez. 2010 15:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Falls man in der acad.pgp definierte Befehle in Lisp aufrufen kann ??? ...

aus der ACAD.PGP:

Zitat:
; Format für externe Befehle:
;  <Befehlsname>,[<Shell-Anforderung>],<Bitkennzeichen>,[*]<Eingabeaufforderung>,

;  Die Bits des Bitkennzeichens haben folgende Bedeutungen:
;  Bit 1: wenn aktiviert, wird Abschließen eines Anwendungsvorgangs
;  nicht abgewartet
;  Bit 2: wenn aktiviert, wird die Anwendung minimiert ausgeführt
;  Bit 4: wenn aktiviert, wird die Anwendung im Hintergrund ausgeführt
;  Bit 8: wenn aktiviert, wird die Argumentzeichenfolge in Anführungszeichen gesetzt
;
;  Geben Sie im Feld für das Bitkennzeichen die Summe der gewünschten Bits ein.
;  Bits 2 und 4 schließen sich gegenseitig aus; sind beide aktiviert, wird nur
;  Bit 2 verwendet.
Die nützlichsten Werte sind 0 (Anwendung starten und auf Abschließen des
;  Vorgangs warten)
,


vielleicht kannst was damit anfangen?

------------------
Schöne Grüße
Ernst

www.geopaint.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 13. Dez. 2010 15:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ein pauschales Danke für die Beiträge - da habe ich jetzt eine gute Basis, um in den nächsten Tagen zu basteln.

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Sanru
Mitglied



Sehen Sie sich das Profil von Sanru an!   Senden Sie eine Private Message an Sanru  Schreiben Sie einen Gästebucheintrag für Sanru

Beiträge: 24
Registriert: 23.07.2010

erstellt am: 14. Dez. 2010 11:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo Peter,
wenn du es sofort über die EXE lösen willst wie hier von dir angezeigt.
Zitat:
Edit: Vielleicht brauche ich gar kein BAT, sondern kann mit


Code:
--------------------------------------------------------------------------------
(startapp "convert.exe a.doc a-neu.doc -x -y - blabla -ding -dong"
--------------------------------------------------------------------------------


direkt starten? (Muss ich später ausprobieren).


Könnte dir vielleicht noch DosLib mit dem Befehl dos_exewait helfen.

Gruß Wolfgang

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 14. Dez. 2010 12:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Sanru:
Könnte dir vielleicht noch DosLib mit dem Befehl dos_exewait helfen.

Auch das klingt gut, danke. Ein Problem könnte es aber damit geben, dass im Handbetrieb der Druckertreiber (PDF XChange) von selbst noch Optimierungsroutinen laufen lässt, wenn AutoCAD mit dem Druck schon fertig ist. Also ist vielleicht das ohnehin erfolglos, wenn man zwar den Druckbefehl selbst überwacht, aber das dritte Unterprogramm noch was macht ....
Wir werden sehen.

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 14. Dez. 2010 17:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo Peter,

ein Hinweis:
Wenn die Bat-Datei nur für Dich ist, kannst Du Windows so einstellen, dass das Erstellen von Bat-Dateien zugelassen wird.
Wenn Deine Konstruktion auch auf einem anderen PC laufen soll, kann es Probleme geben, je nach dem wie die Sicherheitsstufe eingestellt ist.

Gruß
Theodor Schönwald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 14. Dez. 2010 17:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Theodor Schoenwald:
Hallo Peter,

ein Hinweis:
Wenn die Bat-Datei nur für Dich ist, ...



Ja, nur eigenes Gebastel.

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 14. Dez. 2010 18:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo Peter,

dann habe ich schon so etwas gemacht:

bei BAT "A" steht in der letzen Zeile:
echo Fertig >Dummy.TXT
Die Dummy-Datei-Name kann auch mit einem bestimmten Ordner angegeben werden z.B:
echo Fertig >C:\TEMP\Dummy.TXT

Bat "B" kontrolliert ob es eine Datei "Dummy.txt" gibt.

Dann kann noch getestet werden ob in der Datei: "Dummy.txt"
das Wort "Fertig" steht.

Gruß
Theodor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 14. Dez. 2010 20:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Theodor Schoenwald:
...Bat "B" kontrolliert ob es eine Datei "Dummy.txt" gibt. ...

Aber das gibt doch ein Zeitproblem - was macht B, wenn Dummy noch nicht da ist, aber in 4 Sekunden kommen wird? Eine Zeitwarteschleife in BAT?

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 15. Dez. 2010 11:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo Peter,

in Google

bat wait befehl

da findest Du viel über warten mit BAT.

Die WAIT.EXE ist auch ein praktisches Tool.

Auch das habe ich gesehen:

echo >1.vbs wscript.sleep 5000
cscript 1.vbs
del 1.vbs
c:\windows\notepad.exe

Gruß
Theodor

[Diese Nachricht wurde von Theodor Schoenwald am 15. Dez. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz