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

C und C++

Programm Ausführen bei C++ Editor Dev-C++

gelöst Frage von DomiITC und C++5 Kommentare

Liebes Forum, ich bin Anfänger in der Programmierwelt und habe beschlossen mit C zu beginnen. Mit Hilfe eines Youtube ...

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 4 StundenBackup

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 2 TagenHumor (lol)5 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 2 TagenExchange Server7 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 3 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
Netzwerke
Netzwerk-Architektur mit VLANs
Frage von niLuxxNetzwerke43 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Ich werde in Kürze das Netzwerk unserer (sehr) kleinen Firma ...

Netzwerke
SSH - Wieso werde ich nach VPN Verbindung rausgeschmissen?
Frage von VernoxVernaxNetzwerke10 Kommentare

Hallo, ich habe es endlich geschafft mein Handy mit einer VPN Verbindung an meinen Router anzuschließen. Nach der Login ...

Microsoft
Ist es möglich ein reines Volume C Datenbackup in eine Hyper-V VM zu konvertieren?
Frage von Frank84Microsoft10 Kommentare

Hallo zusammen, ich habe hier ein Backup vorliegen, das ausschließlich das komplette C:\ Volume eines physischen Server 2012 enthält. ...

Windows Server
Freigaben per Default nur für Domänen-Benutzer
Frage von tierwoWindows Server8 Kommentare

Hallo gibt es eine Möglichkeit, einen Server 2016 so zu konfigurieren (z.B. per GPO), dass Freigaben die erstellt werden ...