Batch-Dateien im Capture-Plugin übergeben ?

Bei Problemen mit der Bedienung von TV-Browser, bitte hier posten.
amiga

Batch-Dateien im Capture-Plugin übergeben ?

Beitrag von amiga »

Moin.

Ich habe eine Batchdatei geschrieben die auch funktioniert wenn ich sie aus einer Kommandoaufforderung starte, aber wenn ich diese als auszuführende Datei im Capture-Plugin eintrage dann funktioniert sie nicht (Meldung: Applikation meldet sich nicht zurück.)

Die Batch sieht so aus:

REM ### Hauptroutine

echo Parameter %1 = Dateiname
echo Parameter %2 = Stunde
echo Parameter %3 = Minute
echo Parameter %4 = Tag
echo Parameter %5 = Monat
echo Parameter %6 = Jahr
echo Parameter %7 = Username
echo Parameter %8 = Passwort

schtasks.exe /create /SC EINMAL /TN %1 /TR "C:\Programme\WinTV\WinTV2K.EXE" /ST %2:%3:00 /SD %4/%5/20%6 /ru %7 /rp %8



Wenn ich diese mit dem Befehl "start PVR-create.bat" starte (als Applikation im Capture-Plugin eingetragen) dann kommt immer die Fehlermeldung:

Probleme bei dem Starten der Applikation

----- Start of stacktrace -----
java.io.IOException: CreateProcess: start c:\batch\pvr-create.bat In_Concert_Country_Oldies_BR_21_02_2005_0000 00 00 21 02 2005 Michael amiga error=2
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at captureplugin.drivers.defaultdriver.CaptureExecute.executeApplication(CaptureExecute.java:212)
at captureplugin.drivers.defaultdriver.CaptureExecute.execute(CaptureExecute.java:139)
at captureplugin.drivers.defaultdriver.CaptureExecute.addProgram(CaptureExecute.java:97)
at captureplugin.drivers.defaultdriver.DefaultDevice.add(DefaultDevice.java:195)
at captureplugin.DeviceSelector$1.actionPerformed(DeviceSelector.java:112)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
----- End of stacktrace -----


Was läuft da falsch ?
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Die Batch-Datei direkt eintragen ist richtig, aber die Meldung sagt mir das die Batch-Datei nicht innerhalb von einigen Sekunden abläuft. Entweder erwartet das schtask weitere eingaben oder dauert einfach zu lange.

Hast du schonmal das Skript hier:
http://wiki.tvbrowser.org/index.php/Cap ... in_-_WinTV

probiert?
Gast

Beitrag von Gast »

bodo hat geschrieben:Die Batch-Datei direkt eintragen ist richtig, aber die Meldung sagt mir das die Batch-Datei nicht innerhalb von einigen Sekunden abläuft. Entweder erwartet das schtask weitere eingaben oder dauert einfach zu lange.

Hast du schonmal das Skript hier:
http://wiki.tvbrowser.org/index.php/Cap ... in_-_WinTV

probiert?
Ich arbeite hier mit dem PVR von Mainconcept.

Aber in dem Captureplugin is eine feste Zeitspanne einprogammiert in der er möchte daß er sich zurückmeldet ? ich habe es dnan mit

start batch.bat

Versucht. Sollte doch funktionieren, oder ? Start koppelt sich ab und öffnet einen eigenen CMD Thread.

Funktioniert aber auch nicht.

Habe hier WinXp Prof. SP2 mit java 1.5 falls dir das weiterhilft ...
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Jup, der erwartet, das sich das Programm zurückmeldet. In der nächsten Version (die erst in einigen Monaten rauskommt), ist dieses Verhalten einstellbar.

Hab hier nur Linux...aber versuch mal, die Batch-Datei als Parameter anzugeben. Und dann am besten auch den kompletten Pfad zu start oder cmd angeben...vielleicht funktioniert das ja?!
Gast

Beitrag von Gast »

bodo hat geschrieben:Die Batch-Datei direkt eintragen ist richtig, aber die Meldung sagt mir das die Batch-Datei nicht innerhalb von einigen Sekunden abläuft. Entweder erwartet das schtask weitere eingaben oder dauert einfach zu lange.

Hast du schonmal das Skript hier:
http://wiki.tvbrowser.org/index.php/Cap ... in_-_WinTV

probiert?
.... und woher kommt der Parameter "error=2" welcher dem Batch übergeben wird ? Eingetragen habe ich dieses natürlich nicht, den dichtet er sich immer selber hinzu.
Gast

Beitrag von Gast »

Noch ein paar allgemeine Frage:

Wie und wo kann ich den globalen Suchpfad für shell-tools eintragen bzw. zu dem schon vorhandenen addieren ?

Und wieviele Zeichen kann der echo befehl verarbeiten ?
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Den Pfad kannst du irgendwo in den Windows-Einstellungen machen...in den Umgebungsvariablen gibt es einen PATH, da packst du den Pfad hinzu.

Der dichtet Parameter hinzu?! Dieses verhalten hab ich noch nie gesehen :(. Bist du dir sicher, das dieser Parameter vom TV-Browser kommt? Hier unter Linux macht der das nämlich nich
Gast

Beitrag von Gast »

bodo hat geschrieben:Den Pfad kannst du irgendwo in den Windows-Einstellungen machen...in den Umgebungsvariablen gibt es einen PATH, da packst du den Pfad hinzu.

Der dichtet Parameter hinzu?! Dieses verhalten hab ich noch nie gesehen :(. Bist du dir sicher, das dieser Parameter vom TV-Browser kommt? Hier unter Linux macht der das nämlich nich
Wenn ich die Batch-Datei mit "start batch.bat" aufrufe dann meldet er zurück:

Probleme bei dem Starten der Applikation

----- Start of stacktrace -----
java.io.IOException: CreateProcess: start C:\Batch\PVR-create.bat Sprechende_Pflanzen_Urmel error=2

Die "Sprechende_Pflanzen_Urmel" ist jetzt mal testweise nur der eine Parameter der übergeben wurde. Und das "error=2" ? Kommt das vom Java-Interpreter oder wurde dieser vom Capture-Plugin hinzugefügt ?
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Ich schätze, das wird vom java hinzugedichtet. Aber hast du jetzt schonmal versucht start.exe inkl. Verzeichniss (ich glaub c:\winnt\start.exe oder so) anzugeben und dann die batch-Datei in die Parameter zu schreiben, damit die Batch-Datei auch wirklich als Parameter übergeben wird?
Gast

Beitrag von Gast »

bodo hat geschrieben:Ich schätze, das wird vom java hinzugedichtet. Aber hast du jetzt schonmal versucht start.exe inkl. Verzeichniss (ich glaub c:\winnt\start.exe oder so) anzugeben und dann die batch-Datei in die Parameter zu schreiben, damit die Batch-Datei auch wirklich als Parameter übergeben wird?
Jetzt hab ichs.

Ich muß die Batchdatei mit "start" (ohne den expliziten Pfad dahin) und auch die Befehle die ich im Batchfile angebe per "start" starten, dann gehts. Sonst hängt der aus welchen Gründen auch immer.

Eine andere Frage:

Ich will per "echo" eine Datei erstellen aber dort ist das Zeichen "&" enthalten was er als Steuerzeichen in der Befehlszeile interpretiert. Wie bekommen ich das "&" doch noch in die Datei rein ?

Beispiel:

echo >c:\test.txt abc&def

(Da meint er "def" wäre ein neues Kommando, ich will daß er dieses Zeichen nicht als Kommando interpretiert.)

Ich kann zwar ein:

echo >c:\test.txt "abc&def"

machen aber dann packt er auch die Anführungszeichen in die Datei mit rein, was ich nun überhaupt nicht gebrauchen kann.

Gruß
Michael
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Keine Ahnung, da kann ich nich helfen, aber könntest du bitte deine Bat-Datei hier posten oder im Wiki hier:
http://wiki.tvbrowser.org/index.php/Cap ... gurationen

eine neue Seite machen ?

Danke!
Gast

Beitrag von Gast »

bodo hat geschrieben:Keine Ahnung, da kann ich nich helfen, aber könntest du bitte deine Bat-Datei hier posten oder im Wiki hier:
http://wiki.tvbrowser.org/index.php/Cap ... gurationen

eine neue Seite machen ?

Danke!
Werde ich wohl dann machen wenn es bei mir funktioniert. Trotzdem reicht eine Batch-datei alleine nicht, da sind noch eine Reihe andere Dateien zu erstellen. Für jeden Sender eine eigene Definitionsdatei, die man aus dem
vom PVR erstellten Konfigurationen herausschneiden muß. (Zeitplan für RTL erstellen - den erstellten Task in den Editor laden und einige Zeilen da herausschneiden und als RTL.task abspeichern usw., das für jeden Sender.
Das liegt daran weil dort eine "ID" zu finden ist welcher der PVR braucht um zu wissen welchen Sender er einstellen muß von der ich aber keine Ahnung habe wie ich sie generieren könnte.)

Soll heißen: Funktion ist zwar vorhanden, aber die Sache ist ziemlich unflexibel (ändern der Sender im PVR heißt neue Dateien erstellen) und es macht Arbeit.

Ich hoffe außerdem daß die Leute vom Mainconcept mal eine Parameterübergabe an ihr Prg zulassen bzw. einbauen. Ihre Reaktion auf eine diesbezüglich war aber eher lau.

Es könnte alles viel einfacher vor sich gehen aber was soll man machen wenn man keine Unterstützung bekommt ? Dann muß so herumgehackt werden.

Gruß
Michael
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Schade eigentlich

*böse mainconcept anschau* ;)
Gast

Beitrag von Gast »

bodo hat geschrieben:Schade eigentlich

*böse mainconcept anschau* ;)
Wer es sich trotzdem hinbasteln will und vielleicht 2 Stunden Zeit hat (je mehr Sender Mensch empfängt desto mehr Arbeit) der bekommt das also auch mit der jetzigen PVR Version zum laufen.

Bei mir funktioniert es jetzt auch. (Ohne irgendwelche Fehlerabfragen usw.)

Hinzuaddieren und löschen vom TVBrowser aus.

Ich poste mal das Batch-Script (schlecht gemacht nehme ich mal an, ich bin aber auch nicht so der Programmierer.)

@echo off
setlocal

echo Parameter %1 = Dateiname
echo Parameter %2 = Stunde
echo Parameter %3 = Minute
echo Parameter %4 = Tag/Monat/Jahr
echo Parameter %5 = Username
echo Parameter %6 = Passwort
echo Parameter %7 = Aufnahmedauer in Sekunden
echo Parameter %8 = Sender

if %1==delete start schtasks.exe /delete /TN %2 /F

if %1==delete del C:\Programme\Mainconcept\PVR\config\Tasks\%2.task

if %1==delete goto exit

REM *** Create new event ***

start schtasks.exe /create /SC EINMAL /TN %1 /TR "C:\Programme\Mainconcept\PVR\Pvr.exe /task:C:\Programme\Mainconcept\PVR\config\Tasks\%1" /ST %2:%3:00 /SD %4 /ru %5 /rp %6

REM *** calculate recording duration

set /A duration=%7*60+%10

REM *** create new .task file***

copy c:\batch\Part1.task z:\%1.task

echo>>z:\%1.task Duration=%7
echo>>z:\%1.task FileName=F:\Eigene_Dateien\PVR\films\Film Archive\Captured video\%1.mpeg
echo>>z:\%1.task Folder=
echo>>z:\%1.task GeneralMute=1
echo>>z:\%1.task NeedPreview=0
echo>>z:\%1.task ShutdownMode=3
echo>>z:\%1.task MpegType=2

if %8==3SAT type c:\batch\3sat.task >>z:\%1.task

if %8==ARD type c:\batch\ard.task >>z:\%1.task

if %8==ARTE type c:\batch\arte.task >>z:\%1.task

if %8==BR type c:\batch\br.task >>z:\%1.task

if %8==DSF type c:\batch\dsf.task >>z:\%1.task

if %8==KABEL1 type c:\batch\kabel1.task >>z:\%1.task

if %8==KIKA type c:\batch\kika.task >>z:\%1.task

if %8==MDR type c:\batch\mdr.task >>z:\%1.task

if %8==N24 type c:\batch\n24.task >>z:\%1.task

if %8==NDR type c:\batch\ndr.task >>z:\%1.task

if %8==PHOENIX type c:\batch\phoenix.task >>z:\%1.task

if %8==PRO7 type c:\batch\pro7.task >>z:\%1.task

if %8==RTL type c:\batch\rtl.task >>z:\%1.task

if %8==RTL2 type c:\batch\rtl2.task >>z:\%1.task

if %8==SAT1 type c:\batch\sat1.task >>z:\%1.task

if %8==SUPERRTL type c:\batch\superrtl.task >>z:\%1.task

if %8==VOX type c:\batch\vox.task >>z:\%1.task

if %8==WDR type c:\batch\wdr.task >>z:\%1.task

if %8==ZDF type c:\batch\zdf.task >>z:\%1.task

type c:\batch\Part2.task >>z:\%1.task

REM *** copy .task to PVR folder ***

copy z:\%1.task C:\Programme\Mainconcept\PVR\config\Tasks

:exit

------

Aufruf über das Capture-Modul mit:

(Aufnehmen)

start PVR.bat %T2_%CNB_%SD_%SMO_%SY_%SH%SMI %SH %SMI %SD/%SMO/%SY %UN %UP %LS %CNV

(Löschen)

startPVR.bat delete %T2_%CNB_%SD_%SMO_%SY_%SH%SMI


(Alle Pfade im Script sind Systemspezifisch und können so nicht übernommen werden. Dann braucht man noch das Tool "schtasks"
und die gehackten ".task" Dateien wie oben beschrieben.

Bis dann....
Michael

(Trotz allem war und ist es also machbar, im Gegensatz zu WinDVR3, da
habe ich mir die Zähne ausgebissen , beim Versuch dieses irgendwie per TVBrowser zu programmieren.)
Gast

Beitrag von Gast »

bodo hat geschrieben:Schade eigentlich

*böse mainconcept anschau* ;)
Jetzt habe ich doch noch ne Datei gefunden aus der ich die benötigten Daten herausziehen kann, aber ich weiß mal wieder nicht wie das per DOS/Shell gehen soll.

Vielleicht kann mir da einer helfen ?

Die Datei sieht so aus:

---
[channel000]
Value=0
Type=3
Brightness=50
Contrast=50
Hue=50
Saturation=50
avStandart=16
Id=-1270284288
Caption=VOX
Category=

[channel001]
Value=1
Type=3
Brightness=50
Contrast=50
Hue=50
Saturation=50
avStandart=16
Id=-1270284287
Caption=ARD
Category=

[channel002]
Value=1
Type=0
Brightness=50
Contrast=50
Hue=50
Saturation=50
avStandart=16
Id=-1396113367
Caption=RTL
Category=
---

Und jetzt kann ich ja per :

findstr /I /N "caption=ard" "Datei"

suchen und die Zeilennummer in der Datei finden.

Und jetzt brauche ich eben die Daten in der Zeile "Zeilennummer-1"

Wie komme ich da ran ? (Mit WinXP Standart-Sellbefehlen ?)

Keine Ahnung ...

(Habe mir ein Buch darüber bestellt aber das ist noch nicht da.)

Gruß
Michael
Antworten