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

Mitglied: Haubentaucher0815

Haubentaucher0815 (Level 1) - Jetzt verbinden

16.02.2006, aktualisiert 20.02.2006, 6115 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=https://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 ...

C und C++

C Programm- Sprachumschaltung

Frage von SanastasiaC und C++6 Kommentare

Hallo, ich möchte ein programm schreiben welches einen Text in Abhängigkeit von der gesetzen locale ausgibt. also wenn ich ...

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 ...

Neue Wissensbeiträge
SAN, NAS, DAS
Synology DSM 6.2 in Kürze verfügbar
Information von sabines vor 1 StundeSAN, NAS, DAS1 Kommentar

Für Synology NAS Systeme steht in Kürze ein größeres Update auf die Version 6.2 bereit. Die Änderungen sind unter ...

Cloud-Dienste

Neue Exchange Online und Office 365 Limits ab 01.06.2018

Tipp von decathlon vor 17 StundenCloud-Dienste

Achtung für alle Exchange Online Nutzer die es vielleicht übersehen haben. Ab 01. Juni gilt folgendes neues Limit User ...

Humor (lol)
Meine Variante der DSGVO
Tipp von Henere vor 2 TagenHumor (lol)4 Kommentare

Datenschutzerklärung Jede gute Website braucht eine Datenschutzerklärung? Ok, dann machen Sie sich auf etwas gefasst. Präambel Artikel 12 der ...

Administrator.de Feedback

Entwicklertagebuch: Datenschutzerklärung nach DS-GVO

Information von admtech vor 2 TagenAdministrator.de Feedback

Hallo Administrator User, Wir respektieren eure Privatsphäre und möchten euch daher auf die Möglichkeiten für den Umgang mit euren ...

Heiß diskutierte Inhalte
Windows Netzwerk
PCs abschotten, damit keine Dateien rausgehen (Windows 10-CLients auf Windows-Server 2016 Active Directory-Struktur)?
Frage von 1410640014Windows Netzwerk10 Kommentare

Frage: Gibt es Möglichkeiten unter Windows folgende Dinge zu unterbinden - ich meine geben müsste sie sie ja, sonst ...

Batch & Shell
Batch - Alle Dateien und Ordner löschen, ein Verzeichnis aber bei der Löschaktion ausnehmen
gelöst Frage von WindowsUser1Batch & Shell9 Kommentare

Guten Morgen Zusammen, folgende Hürde habe ich im Moment. Ich benötige ein Script, dass in einem Verzeichnis den kompletten ...

CPU, RAM, Mainboards
Wieviel Lüfter hat ein HP Elitebook 8730w ?
Frage von -WeBu-CPU, RAM, Mainboards9 Kommentare

Guten Morgen, gestern Abend hat sich bei meinem HP ein/der Lüfter hörbar abgeschaltet oder stark runter geregelt, obwohl das ...

Batch & Shell
Brauche hilf bei einer batch Datei
gelöst Frage von PilllllleBatch & Shell7 Kommentare

hallo, ich versuche mit Hilfe von einer batch- Datei eine bestimmt Zeile aus einer txt- Datei in eine neue ...