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-ID: 259219

Url: https://administrator.de/forum/parameteruebergabe-an-exe-datei-ueber-ein-batch-259219.html

Ausgedruckt am: 12.04.2025 um 00:04 Uhr

Pjordorf
Pjordorf 08.01.2015 um 17:08:16 Uhr
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
BiffBaff
BiffBaff 08.01.2015 um 17:30:18 Uhr
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!
114757
114757 08.01.2015 aktualisiert um 18:13:21 Uhr
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
laster
laster 08.01.2015 um 18:08:08 Uhr
Goto Top
Hallo BiffBaff,

falls das Programm ein Konsolenprogramm (ohne GUI) ist, könntest Du folgendes probieren
1
2
3
4
5
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
laster
laster 08.01.2015 um 18:08:56 Uhr
Goto Top
nun hatte der jodel32 die gleiche Idee ...
BiffBaff
BiffBaff 08.01.2015 aktualisiert um 18:26:13 Uhr
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.
114757
114757 08.01.2015 aktualisiert um 18:56:00 Uhr
Goto Top
eher so:
1
2
3
4
5
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"  
BiffBaff
BiffBaff 08.01.2015 um 19:03:13 Uhr
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 :/
114757
114757 08.01.2015 aktualisiert um 19:21:28 Uhr
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 ...
BiffBaff
BiffBaff 13.01.2015 aktualisiert um 10:38:52 Uhr
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?
114757
114757 13.01.2015 aktualisiert um 14:01:10 Uhr
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 ?
BiffBaff
BiffBaff 13.01.2015 um 14:44:54 Uhr
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.
114757
114757 13.01.2015, aktualisiert am 16.01.2015 um 09:28:56 Uhr
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 !
BiffBaff
BiffBaff 13.01.2015 aktualisiert um 15:10:03 Uhr
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.
114757
114757 13.01.2015 um 15:49:24 Uhr
Goto Top
was ist das für eine Programmiersprache ?
BiffBaff
BiffBaff 13.01.2015 um 16:10:50 Uhr
Goto Top
Fortran
114757
Lösung 114757 13.01.2015, aktualisiert am 16.01.2015 um 09:28:47 Uhr
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