biffbaff
Goto Top

Parameteruebergabe an exe - datei ueber ein Batch

Hallo zusammen,

ich habe eine batch datei die eine exe datei aufruft und mehrmals ausfuehrt:

for /L %%a IN (1;1;%real%) DO (
start "" /wait "C:\programm.exe"
)

Das ausgefuehrte exe Programm fordert mich nun zur eingabe von Daten auf, ich wuerde gerne der exe datei diese Daten automatisch ueberliefern, da es sich fast immer um dieselben handelt. (Fuer eine Eingabeaufforderung jedoch muesste ich eine Schleife machen, da die Ausgabedatei durchnummeriert werden soll)

Die ausgefuehrte exe datei sieht so aus:
Gib string ein:
String FileName

Gib Werte eine
Integer Wert1,Wert2,Wert3,Wert4

Name Output File
String OutputFile
Ich braeuchte also, falls so etwas ueberhaupt moeglich ist, die Befehle um einen String und Werte sowie "Enter" zu uebergeben.

Geht so etwas? Das wuerde mir 3 Tage eintippen sparen ;)

Vielen Dank im Voraus fuer Loesungsanregungen!

Greetz BiffBaff

Content-Key: 259219

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

Printed on: April 23, 2024 at 07:04 o'clock

Member: Pjordorf
Pjordorf Jan 08, 2015 at 16:08:16 (UTC)
Goto Top
Hallo,

Zitat von @BiffBaff:
Geht so etwas?
Ja.

aber da ich keinerlei ahnung habe was die exe datei intern macht oder wie sie die Parameter erkennt
wenn dort keine Parameter angenommen werden...... Ein Blick in den Quellcode des ungenannten Programms oder den Hersteller befragen oder seine Handbücher zu dem Programm hat immer geholfen Antworten zu finden....

Gruß,
Peter
Member: BiffBaff
BiffBaff Jan 08, 2015 at 16:30:18 (UTC)
Goto Top
Hallo Peter,

danke schonmal fuer die schnelle Antwort.

Nehmen wir an ich kenne die Parameter Variablen im Quellcode, wir nennen diese jetzt folgend:
Gib string ein:
NameFile

Gib Werte eine
Wert1,Wert2,Wert3,Wert4

Name Output File
OutputFile

Wie kann ich jetzt im Batch diese Variablen vorab festlegen und in die exe datei schreiben lassen nachdem diese aufgerufen wurde. Es muesste auch nach jeder Eingabe ein "Enter" erfolgen.

Vielen Dank fuer die Hilfe!
Mitglied: 114757
114757 Jan 08, 2015 updated at 17:13:21 (UTC)
Goto Top
Moin,
Wie kann ich jetzt im Batch diese Variablen vorab festlegen und in die exe datei schreiben lassen nachdem diese aufgerufen wurde
das geht so nicht...Das ginge nur wenn das Programm die Daten aus Umgebungsvariablen abfragen würde, was aber nur ganz selten der Fall ist.

Was sagt das Programm den beim Aufruf von
Programm.exe /?
oder
Programm.exe -?
oder
Programm.exe --help

Wenn es denn ein Programm für die Kommandozeile sein sollte erhältst du so mögliche Informationen zu Parametern welche übergeben werden können.

Ansonsten geht das eventuell über eine Datei in die du die Parameter schreibst und dann mit
Programm.exe <Parameter.txt
an das Programm übergibst.

Kann man nicht mal erfahren wie der Name des Programms ist ? Oder ist der so geheim face-wink

Gruß jodel32
Member: laster
laster Jan 08, 2015 at 17:08:08 (UTC)
Goto Top
Hallo BiffBaff,

falls das Programm ein Konsolenprogramm (ohne GUI) ist, könntest Du folgendes probieren
echo FileName > antwortdatei.dat
echo 1,2,3,4 >> antwortdatei.dat
echo OutputFile >> antwortdatei.dat

programm < antwortdatei.dat

xcopy funktioniert z.B. so...

vG
LS
Member: laster
laster Jan 08, 2015 at 17:08:56 (UTC)
Goto Top
nun hatte der jodel32 die gleiche Idee ...
Member: BiffBaff
BiffBaff Jan 08, 2015 updated at 17:26:13 (UTC)
Goto Top
Zitat von @114757:

Was sagt das Programm den beim Aufruf von
Programm.exe /?
oder
Programm.exe -?
oder
Programm.exe --help

Nur "Press any key to continue..."

Ist nur ein kleines Programm zum umwandeln einer Matrix ;)

Also ich habe jetzt mal das folgende ausprobiert:

set NameFile="Trans"
set Wert1,Wert2,Wert3,Wert4="20,20,2,2"
for /L %%a IN (1;1;%real%) DO (
set Spalte="%%a"
start "" /wait "C:\Programm.exe" %NameFile% %Wert1,Wert2,Wert3,Wert4% %Spalte%

Da hat er schonmal die erste Variable akzeptiert (NameFile) und springt direkt zu der Frage nach den Werten. Die will er aber nicht so richtig uebernehmen, ebensowenig wie die Spalte die sich pro Durchlauf eben um 1 verschieben soll.
Mitglied: 114757
114757 Jan 08, 2015 updated at 17:56:00 (UTC)
Goto Top
eher so:
set "NameFile=Trans"  
set "werte=20,20,2,2"  
set /a real=10
for /L %%a IN (1 1 %real%) DO (
start "" /wait "C:\Programm.exe" "%NameFile%" "%werte%" "%%a"  
Member: BiffBaff
BiffBaff Jan 08, 2015 at 18:03:13 (UTC)
Goto Top
set "werte=20,20,2,2"

Leider ist im Quellcode werte1,werte2,werte3,werte4 vorgegeben und muss in einer Zeile mit komma getrenn stehen :/
Mitglied: 114757
114757 Jan 08, 2015 updated at 18:21:28 (UTC)
Goto Top
Zitat von @BiffBaff:

> set "werte=20,20,2,2"

Leider ist im Quellcode werte1,werte2,werte3,werte4 vorgegeben und muss in einer Zeile mit komma getrenn stehen :/

Quatsch, der Variablenname wird doch sowieso durch den Inhalt im Parameteraufruf ersetzt ...
Member: BiffBaff
BiffBaff Jan 13, 2015 updated at 09:38:52 (UTC)
Goto Top
Quatsch, der Variablenname wird doch sowieso durch den Inhalt im Parameteraufruf ersetzt ...

Dein Loesungsvorschlag klappt aber leider auch nicht, Bei der Abfrage nach den Werten uebernimmt er nicht jene die ich vorher ueber set deklariert habe.
Liegt es vielleicht daran, dass man in der Exe datei enter druecken muss um den 2. Parameter uebergeben zu koennen?
Mitglied: 114757
114757 Jan 13, 2015 updated at 13:01:10 (UTC)
Goto Top
Das bringt hier alles nix wenn wir die genaue Funktionsweise des Programms nicht kennen.
Hast du meinen und Laster's Vorschlag per Übergabe via Stdin probiert ?
Member: BiffBaff
BiffBaff Jan 13, 2015 at 13:44:54 (UTC)
Goto Top
Das bringt hier alles nix wenn wir die genaue Funktionsweise des Programms nicht kennen.

Das Programm fordert mich zu Eingaben auf, wie 1. Name der Ausgangsdatei, 2.die Matrixgroesse etc. und wandelt diese dann um in eine Matrixform die ich brauche. Viel mehr weiss ich leider auch nicht wie das Programm im genauen dann funktioniert.

Hast du meinen und Laster's Vorschlag per Übergabe via Stdin probiert ?

das habe ich auch ausprobiert, funktioniert leider nicht. Die Uebergabe des Namens wie oben genannt hat ja funktioniert, das muesste der richtige Ansatz sein...nur die weitere Uebergabe von Parametern nach der 2. Eingabeaufforderung funktioniert nicht.
Mitglied: 114757
114757 Jan 13, 2015, updated at Jan 16, 2015 at 08:28:56 (UTC)
Goto Top
Leider ist im Quellcode ....

Viel mehr weiss ich leider auch nicht wie das Programm im genauen dann funktioniert.
du hast doch den Quellcode, also alle Möglichkeiten face-wink !
Member: BiffBaff
BiffBaff Jan 13, 2015 updated at 14:10:03 (UTC)
Goto Top
write(*,*) ' Name? '
read(*,'(A)') Name
write(*,*) 'Werte ?'
read(*,*) wert1,wert2,wert3,wert4
write(*,*) ' Welche Spalte ?'
read(*,*) Spalte
write(*,*) ' Welche Verteilung ?'
read(*,*) Verteilung

der Quellcode fragt mich das hier und der rest sind schleifen und mathe. Aber es kommt ja auf diesen Abschnitt an, ich will ja nur diese variablen die die exe unter read einliest vom batch uebergeben lassen.
Mitglied: 114757
114757 Jan 13, 2015 at 14:49:24 (UTC)
Goto Top
was ist das für eine Programmiersprache ?
Member: BiffBaff
BiffBaff Jan 13, 2015 at 15:10:50 (UTC)
Goto Top
Fortran
Mitglied: 114757
Solution 114757 Jan 13, 2015, updated at Jan 16, 2015 at 08:28:47 (UTC)
Goto Top
Zitat von @BiffBaff:

Fortran
Dann schreib dir das Programm um damit es die Parameter als Commandline-Parameter akzeptiert.
Der Befehl dazu findest du hier:
https://gcc.gnu.org/onlinedocs/gcc-4.9.1/gfortran/GETARG.html

Compiler für Fortran gibt es viele:
http://www.thefreecountry.com/compilers/fortran.shtml

Ausprobieren kannst du dich sogar online:
http://www.tutorialspoint.com/compile_fortran_online.php

Und schon läuft die Suppe face-wink