Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Gewisse Befehle in Batch klappen nicht mit C++

Sovebämse / 12 Antworten / Baumansicht Nickles

Hallo

Habe innerhalb eines C++ Programms eine Batch-Datei ausführen wollen mit Hilfe des Befehls "system()". Dies geht zwar, allerdings funktionieren (bislang) zwei Befehle so nicht.

Das eine wäre "net use". Führe ich die Batch normal aus, klappt alles, das Netzlaufwerk wird verbunden. Führe ich die Batch aus dem C++ Programm aus, erscheint die Meldung "Systemfehler 85 aufgetreten. Der lokale Gerätename wird bereits verwendet." Ein weiteres Problem ist der Start von "explorer.exe". Normal ausgeführt innerhalb einer Batch klappt es tip top. Aus dem C++ Programm heraus, passiert nix, das heisst, der zuvor abgeschossene Explorer wird nicht mehr neu gestartet. Hier hat es dann aber genützt, die Batch in eine Exe umzuwandeln, da geht's dann. Bei "net use" aber auch mit der Exe-Datei nicht. Kann mich jemand aufklären?

Gruss und Dank
Thomas

bei Antwort benachrichtigen
Prosseco Sovebämse „Gewisse Befehle in Batch klappen nicht mit C++“
Optionen

Hallo Sovebämse.

Erstens wie schaut es aus mit Stack Overflow?

a pipe is a way to communicate with another program you launched; you can create it e.g. with popen. But you don't need that: if you want to write a program in C++, write it in C++; if you want to write batch, write a batch file. But don't mix C++ with batch whenever you have to learn something: instead, learn the C++ way to do that.

Gruesse

Sascha

Das ist keine Signatur. Sondern ich putz hier nur
bei Antwort benachrichtigen
Sovebämse Prosseco „Hallo Sovebämse. Erstens wie schaut es aus mit Stack Overflow? a pipe is a way to communicate with another program you ...“
Optionen

Hallo Sascha

Ich muss leider gestehen, ich bin da so ein Bastel-Programmierer. Ich habe C++ ein wenig erarbeitet (einfache Konsole halt, noch keine Klassen etc.), mehr ist im Moment nicht drin. Darum suche ich "einfache" Möglichkeiten, die gut zu durchschauen sind. Habe auch schon nach Möglichkeiten direkt aus C++ geschaut, aber hat nicht gefunzt... z. B. mit WNetAddConnection.

Was meinst du mit "Stack Overflow"?

Gruss
Thomas

bei Antwort benachrichtigen
mawe2 Sovebämse „Gewisse Befehle in Batch klappen nicht mit C++“
Optionen
Hier hat es dann aber genützt, die Batch in eine Exe umzuwandeln

Wie wandelst Du eine BAT-Datei in eine EXE um?

Gruß, mawe2

bei Antwort benachrichtigen
gelöscht_84526 mawe2 „Wie wandelst Du eine BAT-Datei in eine EXE um? Gruß, mawe2“
Optionen
bei Antwort benachrichtigen
mawe2 gelöscht_84526 „Vielleicht hier mit: http://www.chip.de/downloads/Bat-To-Exe-Converter_59802845.html“
Optionen

Interessant. Das kannte ich noch nicht. Kann ja sein, dass man sowas mal braucht.

Danke für den Tipp!

Gruß, mawe2

bei Antwort benachrichtigen
gelöscht_84526 mawe2 „Interessant. Das kannte ich noch nicht. Kann ja sein, dass man sowas mal braucht. Danke für den Tipp! Gruß, mawe2“
Optionen
Danke für den Tipp!

Gern geschehen.... :-)

bei Antwort benachrichtigen
Sovebämse gelöscht_84526 „Gern geschehen.... :-“
Optionen

Jepp, ist noch witzig. Dachte zuerst auch nicht, dass es sowas gibt. Aber eben, es nützt bei "net use" nicht so wie bei der anderen Batch.

bei Antwort benachrichtigen
mawe2 Sovebämse „Jepp, ist noch witzig. Dachte zuerst auch nicht, dass es sowas gibt. Aber eben, es nützt bei net use nicht so wie bei der ...“
Optionen
Dachte zuerst auch nicht, dass es sowas gibt. Aber eben, es nützt bei "net use" nicht so wie bei der anderen Batch.

Andere Frage: Warum realisierst Du das Ganze nicht gleich komplett in C++??

Ich kenne mich zwar mit C++ nicht aus, gehe aber mal davon aus, dass man sowas wie eine Netzwerkfreigabe auch dort realisieren können müsste.

Gruß, mawe2

bei Antwort benachrichtigen
Sovebämse mawe2 „Andere Frage: Warum realisierst Du das Ganze nicht gleich komplett in C ?? Ich kenne mich zwar mit C nicht aus, gehe aber ...“
Optionen

Weil man in der Batch die Standard-Kommandozeilenbefehle verwenden kann und in C++ muss ich mir jede Funktion erarbeiten und dazu noch die Grundlagen, da mir diese fehlen. Ich habe nur mal ein wenig auf der Konsole programmiert und stehe, was Funktionen betrifft, noch ganz am Anfang und mit Klassen habe ich noch gar nichts gemacht.

bei Antwort benachrichtigen
Borlander Sovebämse „Weil man in der Batch die Standard-Kommandozeilenbefehle verwenden kann und in C muss ich mir jede Funktion erarbeiten und ...“
Optionen

Naja, Du könntest zumindest die einzelnen Befehle aus der Zeit Batch-Datei zumindest mal mit Sytem ausführen. Ggf via cmd.exe.

bei Antwort benachrichtigen
Sovebämse Borlander „Naja, Du könntest zumindest die einzelnen Befehle aus der Zeit Batch-Datei zumindest mal mit Sytem ausführen. Ggf via cmd.exe.“
Optionen

Hallo

Das habe ich versucht, also mit "net use" und System. Leider passiert hier aber gar nichts. Er kompiliert zwar und führt aus, aber das Laufwerk wird nicht verbunden.

Der Code dazu:

system("net use R: \\\\UNT-Server01\\plattform\\ /USER:thomas.s Jxcx8134");

* Benutzername und Passwort natürlich nicht den Tatsachen entsprechend ;-) Alles andere 1:1.

Gibt es eine Möglichkeit, eine allfällige Fehlermeldung einzusehen? Das DOS-Fenster erscheint nur sehr kurz und selbst mit einer eingebauten Pause oder dem Warten auf eine Eingabe per cin sieht man nichts ausser eben des Cursors, der auf eine Eingabe wartet. 

Gruss
Thomas

bei Antwort benachrichtigen
Sovebämse Nachtrag zu: „Hallo Das habe ich versucht, also mit net use und System. Leider passiert hier aber gar nichts. Er kompiliert zwar und ...“
Optionen

Hm, seltsam. Ich habe nun die Zeile geändert... vor dem ersten und nach dem letzten " einen Leerschlag und NET gross geschrieben, hinter "plattform" Schrägstriche entfernt, jetzt klappt es plötzlich.

bei Antwort benachrichtigen