Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Wert aus C-Programm in Batch verwenden

Frage Entwicklung Batch & Shell

Mitglied: Haubentaucher0815

Haubentaucher0815 (Level 1) - Jetzt verbinden

16.02.2006, aktualisiert 20.02.2006, 6101 Aufrufe, 12 Kommentare

Ich suche eine Problemlösung für folgenden Fall ...

Ich muss in wiederkeherenden Fällen in einer Batch unterschiedliche Inhalte aus LOG Files weiterverarbeiten ...

Dazu möchte ich aus der Batch ein C-Programm aufrufen, welches mir die entsprechenden Werte liefert.

Wie bekomme ich den Wert aus dem C-Programm zurück in die Batch, um sie dann in einer Variable weiterzuverwerten ?

Bislang ist mir als Lösung nur eingefallen, den Wert aus dem C-Programm in eine TXT Datei zu schreiben, und diese dann per Batch auszulesen ...

hier:
set /p VARIABLENNAME=<DATEINAME.TXT



Aber das ist irgendwie nicht wirklich schön gelöst ...
Mitglied: fachinformatiker
16.02.2006 um 15:39 Uhr
Nicht schön gelöst, aber es geht schonmal.
Eine andere Lösung die mir einfällt ist eine Batch aus dem C-Programm mit den Variablen als Parameter zu starten. Vielleicht gefällt dir das besser ?
Eine dritte Möglichkeit fällt mir gerade auch nicht ein.
Bitte warten ..
Mitglied: Haubentaucher0815
16.02.2006 um 16:06 Uhr
... hab ich auch schon dran gedacht ...
finde ich aber nicht so nett, weil die Struktur noch undeutlicher wird.

Batch1 -> EXE -> Batch2

Nett wäre soetwas wie Rückgabewert des EXE Aufrufs verwenden zu können ... wie in normalen Funtionsaufrufen ...
Bitte warten ..
Mitglied: Biber
16.02.2006 um 16:24 Uhr
Moin Taubenhaucher,
lass doch dein C-Proggi den Output ganz normal auf STDOUT schreiben (auf den Monitor ausgeben). Also mit printf() oder cout.

Etwas ähnliches mache ich mit VB-Schnipseln, die ich aus dem Batch erzeuge und aufrufe in dem Beitrag <a href=http://www.administrator.de/Workshop_Batch_for_Runaways_Part_III_Datums ... target="blank">Datums- und Zeitvariablen...</a>.

Ist doch einfacher, als die Umgebungsvariablen mit SetEnv() zu manipulieren.

Gruß Biber
Bitte warten ..
Mitglied: Guenni
16.02.2006 um 23:03 Uhr
@Haubentaucher0815

Hi,

das Hauptprogramm main in C/C++ gibt einen Wert mittels return
an das Betriebsystem zurück.

Quelltext von return.exe:
<font class="code">
int main(void){
return 1;
}
</font>

Den Wert kannst du ohne weiteres in einer Batch verwenden.
<font class="code">
@echo off
return.exe
if %errorlevel%==1 goto erg
goto end
:erg
echo programm hat 1 zurückgegeben
:end
</font>

Gruß
Günni
Bitte warten ..
Mitglied: Biber
16.02.2006 um 23:19 Uhr
@Günni
Uuups, dann hatte ich die Frage falsch verstanden... ich dachte, es ginge um Text, der zurückgegeben werden sollte.

Bei Errorleveln reicht natürlich ein return- oder exit()-Value.

Melde mich wieder, wenn ich ausgeschlafen habe...

Gute Nacht
Biber
Bitte warten ..
Mitglied: Guenni
17.02.2006 um 00:03 Uhr
@Biber

Hi,

ebenfalls "Uuups", habe mir die Frage gerade nochmal durchgelesen, das könnte natürlich
auch gemeint sein.

Aber selbst wenn dem so sein sollte, das Hauptprogramm main gibt
sowieso nur INT-Werte zurück, char main(void) funktioniert nicht.

Also müssen innerhalb des C/C++ Programms Entscheidungen getroffen werden,
das Ergebnis wird mit "return ERGEBNIS" (als int) ans OS zurückgegeben.

Also:

if(blablabla) return 1
if(nicht blablabla) return 2

Und in der Batch:

if %errorlevel%==1 goto ....
usw.

Gruß
Günni
Bitte warten ..
Mitglied: Haubentaucher0815
17.02.2006 um 14:32 Uhr
@Günni: es geht bei der Problemstellung um einen String genauer gesagt einen Programmpfad

@Biber:
>lass doch dein C-Proggi den Output ganz normal auf STDOUT schreiben (auf den Monitor >ausgeben). Also mit printf() oder cout.
Genau ... eien derartige Lösung habe ich gesucht !!!

Allerdings habe ich da noch ein kleines Problem ...
Versuche es mal anhhand eines VBScriptes zu erklären:

Das VBScript Variablesetzen entnhält nur den Befehl:
echo Variablenwert

Habe aus deinem Skript den code:
for /f %a in (cscript //nologo Variablesetzen.vbs) do @echo Wert der Varibale=%a

im CMD funktioniert das, allerdings nicht in einer Batch ... da bekomme ich einen Syntaxfehler.

Es gibt doch bestimmt auch die Möglich keit ohne "for" und mit set ... habe ien wenig probiert allerdings ohne erfolg ...


Gruß,

Haubentaucher0815
Bitte warten ..
Mitglied: Guenni
17.02.2006 um 16:46 Uhr
@Haubentaucher0815

Hi,

wenn du das Ergebnis eines C/C++ Programms in eine Textdatei speichern kannst,
dann kannst du auch eine Batchdatei erstellen. Diese Batchdatei rufst du von einer
Batchdatei aus auf:

Inhalt der aufrufenden Batchdatei:

<font class=?code">
cprogramm.exe --> erstellt Batchdatei
erstellte_Batchdatei
--> die vom cprogramm erstellte Batchdatei wird aufgerufen.
</font>

oder

<font class=?code">
cprogramm.exe --> erstellt Batchdatei
call erstellte_Batchdatei
--> die vom cprogramm erstellte Batchdatei wird aufgerufen.
</font>


Das C-Programm liest deine Log-Files und generiert eine Batchdatei zur
Weiterverarbeitung und speichert diese in erstellte_Batchdatei.

Diese erstellte Batch wird dann ausgeführt.

Hoffe ich mal.....

Gruß
Günni
Bitte warten ..
Mitglied: Biber
17.02.2006 um 17:03 Uhr
@Taubenhaucher
Wenn Du am CMD-Prompt eine gültige FOR /F..IN..DO-Anweisung hinbekommen hast, ist das ganze Geheimnis des Laufenlassens als Batchdatei:
Jeweils zwei Prozentzeichen statt einem bei den FOR-Zählvariablen.

Also wenn Du ein C-Proggi hast namens cProg.exe, dass mit Para1=Datum und Para2=Filename gerufen wird und die als Output "Aschermittwoch" zurückgibt:

CMD>FOR /F %i in ('cProg.exe 17.02.2006 x:\yz\mylogdatei.log') do @echo %i
--->sollte zurückkommen:
Aschermittwoch

BATCH>FOR /F %%i in ('cProg.exe 17.02.2006 x:\yz\mylogdatei.log') do Set "BackFromC=%%i"

---> Variable %BackFromC% sollte jetzt den Wert "Aschermittwoch" haben.

HTH and nice Weekend
Biber
P.S.
@Günni
Mit Dir wollte ich das ohnehin mal bei einem oder zwei Becks weiterdiskutieren
Bitte warten ..
Mitglied: Guenni
17.02.2006 um 18:44 Uhr
@Biber

@Günni
Mit Dir wollte ich das ohnehin mal bei einem
oder zwei Becks weiterdiskutieren

von mir aus, jederzeit gerne, aber wo???

Gruß
Günni

P.S.: Nochmal "UUUUPS", ich glaube, das hat jetzt hier nichts mehr verloren. Bitte
verschieben in "OFF TOPIC"
Bitte warten ..
Mitglied: Haubentaucher0815
20.02.2006 um 10:42 Uhr
Vielen Dank für Eure Hilfe !

So funktioniert es ... %% war mein Problem ... hatte halt bislang nur wenig Berührungspunkte mit Batchprogrammierung ...

Gruß,

Haubentaucher
Bitte warten ..
Mitglied: Biber
20.02.2006 um 11:21 Uhr
>>... %% war mein Problem..

Zu viele Promille sind für viele das Problem...

[Edit] Beitrag auf "Gelöst" gesetzt.
[/Edit]
Bitte warten ..
Ähnliche Inhalte
Microsoft
Selbst installierte Programme auf C oder D?
gelöst Frage von honeybeeMicrosoft7 Kommentare

Hallo, ich habe eine SSD (Laufwerk C) und eine HDD (Laufwerk D) auf meinem Notebook. Wohin würdet ihr an ...

Batch & Shell
Wetter mit Batch verwenden??? Wie???
Frage von DaTobsnBatch & Shell24 Kommentare

Hallo Comunity, ich bin´s mal wieder :D Ich arbeite zur Zeit an einem Batch-Programm, was mir beim Start verschiedene ...

Multimedia & Zubehör
MIDI-Controller mit 2 Programmen verwenden
gelöst Frage von peterlaMultimedia & Zubehör3 Kommentare

Hallo! Bis jetzt lief auf einem Windows 8-Rechner (Studioumgebung) nur eine Radioautomation, die von einem KORG Nanopad2 (MIDI-Controller) gesteuert ...

Batch & Shell
Batch: Variable einen Wert zuweisen
gelöst Frage von sklaimBatch & Shell7 Kommentare

Hallo zusammen! Ich bin gerade am verzweifeln Ich habe in Batch 2 Variablen: Wenn ich mir von diesen den ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 12 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 14 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...