unstoppable Batch - fast Gelöst

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
INe5xIlium(Freak5)
Beiträge: 32
Registriert: 29.07.2002, 11:43

unstoppable Batch - fast Gelöst

Beitrag von INe5xIlium(Freak5) »

Ich habe eine Batch Datei, die ein Programm aufruft, das leider ~100 Fehler auswirft, welche jedoch nicht weiter schlimm sind. Jeder Fehler muss jedoch mit 'enter' bestätigt werden. Kann ich diese Bestätigung in der Batch irgendwie unterdrücken?

Wenn ich einfach 100 neue Zeilen in die Datei tex4ht Workaround.txt schreibe, habe ich den Vorteil, dass htlatex 00_TexNotes.tex <tex4htWorkaround.txt
nicht mehr abbricht und nach einer Bestätigung verlangt. Andererseits bricht die Ausführung früher ab als sie es tun sollte. warum auch immer....(die letzten Zeilen der Log hab ich mal unten angehängt)

Ausführlicher es handelt sich um tex4ht. Ich produziere eine HTML Datei aus meiner Tex Datei, um den text zu extrahieren und die Tippfehler so schneller zu finden. Für Texniccenter und ähnliche Programme hab ich bis jetzt noch keine Software gefunden, die zusammengesetzte Wörter wie "Postkasten" als richtig erkennt. Word zum Beispiel ist da einfach überlegen und checkt nebenbei sogar die Grammatik und Zeichensetzung wie (), wo man schnell mal ein Leerzeichen zu viel oder zu wenig hat.
Das Problem ist, dass tex4ht scheinbar Probleme mit ntheorem hat. Ob es direkt an ntheorem liegt oder daran, dass prinzipiell etex nicht funktioniert mit tex4ht hab ich nicht ausprobiert. Auf alle fälle hat er ein Problem mit den Countern

Code: Alles auswählen

[6

]
Kapitel 3.

! LaTeX Error: No counter '[' defined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.4 \begin{Satz}
                [Die Unentscheidbarkeit der Konfluenz] ist leicht zu erkenne...
Da ich die Counter alle an die Definition gebunden hab, sieht die Ausgabe dann so aus

Code: Alles auswählen

Satz]Definition Satz 3.0 (Die Unentscheidbarkeit der Konfluenz)
Da sonst alles funktioniert und das PDF (also die original Ausgabe) diese Probleme nicht aufweist, denke ich, dass es sich nicht lohnt zu viel Zeit in das Problem zu stecken. 100x auf Enter zu hauen und eine Ewigkeit auf die HTML-Ausgabe zu warten, sehe ich aber auch als Verschwendung an, besonders weil es eher schlimmer als Besser wird mit jeder Definition, jedem Lemma oder Satz.
Zuletzt geändert von INe5xIlium(Freak5) am 05.10.2010, 16:10, insgesamt 2-mal geändert.
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: unstoppable Batch - Wie unterdrücke ich Unterbrechungen

Beitrag von kimmi »

Versuch mal den Link, da findest du etwas zu dem Thema:
http://msdn.microsoft.com/en-us/library ... .5%29.aspx

Gruß Kimmi
INe5xIlium(Freak5)
Beiträge: 32
Registriert: 29.07.2002, 11:43

Re: unstoppable Batch - Wie unterdrücke ich Unterbrechungen

Beitrag von INe5xIlium(Freak5) »

Ich schau es mir mal an, vielleicht habe ich nicht ganz deutlich gemacht, dass das andere Programm auch eine Konsolenapplikation ist(sry). Auf dem ersten Blick sieht der Link sehr nach Fensterunterdrückung aus (was ich natürlich auch nicht schlecht finde)
both how to use EnableDefaultReply, a registry value that responds to a MessageBox function call with the default reply, and how to instruct the system to log the contents of the message box to the event log.
Also genau das für Konsolenfehler bräuchte ich ^^
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: unstoppable Batch - Wie unterdrücke ich Unterbrechungen

Beitrag von eXile »

Jeder Fehler muss jedoch mit 'enter' bestätigt werden. Kann ich diese Bestätigung in der Batch irgendwie unterdrücken?
Würde es vielleicht reichen, einfach nur die ganze Zeit Enter in die Standardeingabe des Programms zu pipen?
Löwe
Beiträge: 15
Registriert: 29.09.2003, 21:17

Re: unstoppable Batch - Wie unterdrücke ich Unterbrechungen

Beitrag von Löwe »

ein- und ausgabe von konsolenprogrammen kann man soweit ich weiß mit < bzw > umleiten

also
programm > xyz.txt
würde die ausgabe vom programmaufruf in die datei xyz.txt umleiten

programm < xyz.txt
würde immer wenn das programm eine eingabe erwartet, entsprechende zeichen aus der datei xyz.txt auslesen

ist vermutlich nicht die lösung deines problems, aber vllt hilft es weiter

mfg
Löwe
INe5xIlium(Freak5)
Beiträge: 32
Registriert: 29.07.2002, 11:43

Re: unstoppable Batch - Wie unterdrücke ich Unterbrechungen

Beitrag von INe5xIlium(Freak5) »

hehe, an programm< xyz.txt hab ich garnicht gedacht, das ist genial ^^ und ich hab mir Gedanken gemacht, wie ich die Ausgabe am besten analysiere, um immer Enterzeichen zurückzusenden. Ich hab jetzt einfach eine Datei mit 200 leeren Zeilen erstellt und lese daraus die Eingaben. So komplex, dass ich genauer die Eingabe gelesen hätte, hätte ich das so wie so nicht gemacht und ich wollte eigentlich keine Zeit investieren. So passt das.

Edit: Vorallem hab ich nicht gedacht, dass eine neue Zeile genau dem Enter befehl entspricht. Es scheint aber trotzdem Seiteneffekte zu geben, sonst würde die ausgabe nicht früher abbrechen als sie es vorher getan hat.

Code: Alles auswählen

Execute script `00_TexNotes.lg'

C:\Tex Notes\htmloutput>t4ht 00_TexNotes.tex  -ec:\tex4ht\texmf\tex4ht\base\win32\tex4ht.env  
Error: /undefined in obj
Operand stack:
   5   0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   --nostringval--   1   3   %oparray_pop   1   3   %oparray_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--
Dictionary stack:
   --dict:1129/1686(ro)(G)--   --dict:0/20(G)--   --dict:85/200(L)--   --dict:174/300(L)--   --dict:65/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is 19184
Error: /undefined in obj
Operand stack:
   5   0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   --nostringval--   1   3   %oparray_pop   1   3   %oparray_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--
Dictionary stack:
   --dict:1129/1686(ro)(G)--   --dict:0/20(G)--   --dict:85/200(L)--   --dict:174/300(L)--   --dict:65/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is 19184
----------------------------
t4ht.c (2009-01-31-07:34 kpathsea)
t4ht 00_TexNotes.tex 
  -ec:\tex4ht\texmf\tex4ht\base\win32\tex4ht.env 
(C:/Office/MikTeX_2_8/tex4ht/base/win32/tex4ht.env)
Entering 00_TexNotes.lg
System call: if exist zz00_TexNotes.ps DEL zz00_TexNotes.ps >nul
System return: 0
System call: if exist 00_TexNotes0x.png DEL 00_TexNotes0x.png >nul
System return: 0
System call: dvips -E -Ppdf -mode ibmvga -D 110 -f 00_TexNotes.idv -pp 2 > zz00_TexNotes.ps
System return: 0
System call: convert -trim +repage -density 110x110 -transparent "#FFFFFF" zz00_TexNotes.ps 00_TexNotes0x.png
--- Warning --- System return: 1
Entering 00_TexNotes.css
Entering 00_TexNotes.tmp
So ich hab nen Hardcoreworkaround gebastelt ^^

Code: Alles auswählen

#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;

int main()
{
fstream Ausgabe("tex4htw.txt",ios::out);
string buffer;


while (getline(cin, buffer)) 
{ 
Ausgabe<<buffer<<endl;
cout<<buffer<<"-e-"<<endl;
keybd_event(VK_RETURN,   0, 0, 0); 
keybd_event(VK_RETURN,   0, KEYEVENTF_KEYUP, 0); 

}
keybd_event(VK_RETURN,   0, KEYEVENTF_KEYUP, 0); 
return 0;
}
Antworten