Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Consolen Programm fehlerhaft bei Leerzeichen im Pfad -> Wie Nutzung ermöglichen?
Krumnix
myCSharp.de - Member



Dabei seit:
Beiträge: 115
Herkunft: Schweiz

Themenstarter:

Consolen Programm fehlerhaft bei Leerzeichen im Pfad -> Wie Nutzung ermöglichen?

beantworten | zitieren | melden

Hallo.

Ein externes Consolen Programm wurde von mir in mein Projekt integriert und mit eure Hilfe hier im Forum optimal verwendet.

Jetzt ist es leider so, dass das Consolen Programm keine Leerzeichen im Programmpfad erlaubt. Da bei der Installation des Programms der Benutzer dies irgendwohin installiert wo sich Leerzeichen im Pfad befinden können (z.B. Program Files) hab ich somit ein Problem.

Frage:
Kann ich dem Consolen-Programm irgendwie den Aufrufpfad "vorgaukeln", dass es keine Leerzeichen darin gibt?
Jemand eine andere Idee?

Danke
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10072

beantworten | zitieren | melden

Das ist bei allen Consolenprogrammen so, deswegen benutzt man ja auch "" um pfade.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15708
Herkunft: BW

beantworten | zitieren | melden

Das liegt nicht an der Konsolenanwendung selbst, sondern wie Betriebssysteme Kommandozeilen-Befehle verarbeiten.
How do I use spaces in the Command Prompt?
private Nachricht | Beiträge des Benutzers
Krumnix
myCSharp.de - Member



Dabei seit:
Beiträge: 115
Herkunft: Schweiz

Themenstarter:

beantworten | zitieren | melden

Nein. Das Problem besteht auch, wenn das Programm direkt im CMD aufgerufen wird.
Pfad mit Leerzeichen funktioniert nicht.
Pfad ohne funktioniert.

Beispiel:

Win+R -> CMD -> Enter

CD Test Pfad
Consolenprogramm.exe
---> Funktioniert nicht

CD TestPfad
Consolenprogramm.exe
Funktioniert
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Krumnix am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15708
Herkunft: BW

beantworten | zitieren | melden

[Hinweis] Wie poste ich richtig? Punk 5, Fehler genau beschreiben.
Mit "Funktioniert nicht" kann niemand was anfangen.
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1457
Herkunft: Düsseldorf

beantworten | zitieren | melden

Das funktioniert, wichtig ist, dass man sich vorher unter C:/ befindet, daher die erste Zeile:
cd c:/
cd Program Files
cd "Program Files"


Das funktioniert immer, hauptsache der Pfad ist vollständig:
cd c:/Program Files
cd "c:/Program Files"


Eine Exe Starten funktioniert auch immer, außer sie hat Leerzeichen im Namen, dann braucht's eben Anführungszeichen.
Und natürlich muss der Pfad stimmen.


Aber ja - Fehlermeldungen verraten für gewöhnlich den Fehler.
private Nachricht | Beiträge des Benutzers
david.m
myCSharp.de - Member



Dabei seit:
Beiträge: 113

beantworten | zitieren | melden

Für den Befehl gibt es den Parameter /D, mit dem auch das Laufwerk gewechselt wird. https://ss64.com/nt/cd.html
private Nachricht | Beiträge des Benutzers
Krumnix
myCSharp.de - Member



Dabei seit:
Beiträge: 115
Herkunft: Schweiz

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
[Hinweis] Wie poste ich richtig? Punk 5, Fehler genau beschreiben.
Mit "Funktioniert nicht" kann niemand was anfangen.

Es kommt die Meldung vom Programm:
Fehler: Aufruf der internen Funktion zur Übertragung der Datei auf die Steuerung fehlgeschlagen. Grund: Der Aufrufpfad beinhaltet Leerzeichen, was nicht erlaubt ist.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1821
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

@Krumnix
Und wie sieht dein bisheriger Code aus?
Wir können dir nur helfen, wenn wir auch sehen, wie es aktuell umgesetzt ist.
Die Ratschläge bisher sind alle korrekt nur scheinst du diese nicht anzuwenden.
Du musst deine Pfade mit Leerzeichen immer mit Anführungszeichen einschließen und an deine Anwendung geben.
Durch die Anführungszeichen wird dein Pfad wie ein Argument an das Programm geliefert.

Nachtrag:
Und bitte auch den Code zeigen, der den Fehlerwirft.
Klingt nämlich mehr nach einem Problem in dem aufgerufenen Programm als bei der Übergabe des Pfades.
Hier scheint das Programm selbst den pfad zu prüfen und einen Fehler zu werfen, wenn dort ein Leerzeichen vorhanden ist.
In dem Fall müsstest du deine Datei verschieben damit dein Pfad keine Leerzeichen mehr hat und dann den neuen Pfad als Parameter übergeben.

T-Virus
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am .
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
Krumnix
myCSharp.de - Member



Dabei seit:
Beiträge: 115
Herkunft: Schweiz

Themenstarter:

beantworten | zitieren | melden

Ok, vielleicht habe ich mich falsch ausgedrückt. Daher nochmal etwas detaillierter.

Ich befinde mich im Windows 10 CMD-Fenster. Mein Programm läuft nicht, VS läuft nicht. Der Cursor blinkt und wartet auf Eingabe.

Anzeige -> C:\

Ich schreibe: cd Test Pfad

Anzeige -> C:\Test Pfad\
Cursor blinkt hier.

Ich schreibe: consolenprogramm und drücke Enter

Es kommt die Meldung:
Fehler: Aufruf der internen Funktion zur Übertragung der Datei auf die Steuerung fehlgeschlagen. Grund: Der Aufrufpfad beinhaltet Leerzeichen, was nicht erlaubt ist.

Schreibe: cd.. + Enter
Schreibe: cd TestPfad + Enter (!!! Ordner hat KEINE Leerzeichen)
Schreibe: consolenprogramm + Enter
Programm läuft durch.

Das hat also nix mit meinem Code erstmal zu tun. Da ist was im Programm selbst, was dann nicht funktioniert.
Nun war die Frage, ob ich das unabhängig vom Pfad trotzdem starten kann, so dass das Programm meint, im Pfad ist kein Leerzeichen drin, obwohl es in so einen Pfad installiert wurde.
Kann man sowas über C# "vorgaukeln".

Den Rest verstehe ich ja :)
Vielen Dank schonmal für eure Hilfe dazu.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Krumnix am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15708
Herkunft: BW

beantworten | zitieren | melden

Nochmal: der Fehler ist offenbar Anwendungslogik, nicht das Framework aus .NET oder Windows.
Zitat
Kann man sowas über C# "vorgaukeln".

Nochmal: mit .NET hat das nichts zutun.
.NET ist auch "nur ein Wrapper" um Windows Funktionen für sowas. Und natürlich kannste hier nix vorgaukeln.
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3430
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,

NTFS unterstützt auch Links auf Dateisystemebene (ähnlich Linux-Dateisystemen).
Damit müsste es funktionieren.
Schau mal unter NTFS links.

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1821
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

@Krumnix
Dann würde ich folgende Dinge prüfen.

1.Kannst du an dem Verhalten was ändern z.B: durch Anpassung an dem Programm?
2.Kannst du das Programm nicht einfach irgendwo anders installieren/ablegen?

Wenn das beides nicht geht, kannst du schauen ob der Vorschlag von MarsStein eine Lösung wäre.
Wenn auch dies nicht geht, ist eine Lösung dieses Problems mit einfachen Mitteln gar nicht machbar :/

Einfachste Lösung wäre eben das Programm neu in einem anderen Order zu isntallieren, dann dürfte sich das Problem erledigen.

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
Krumnix
myCSharp.de - Member



Dabei seit:
Beiträge: 115
Herkunft: Schweiz

Themenstarter:

beantworten | zitieren | melden

Hmmm, schade.
Ich kopiere jetzt das Consolen-Programm in C:\Temp\ und rufe es von dort immer auf. Läuft, aber unschön.
Wenn mein Programm geschlossen wird, lösche ich das Consolen-Programm in Temp wieder.

Die Idee von MarsStein wäre jetzt zu aufwendig, würde ich mir aber mal bei Gelegenheit anschauen.

Danke für eure Tipps.
private Nachricht | Beiträge des Benutzers
Stefan.Haegele
myCSharp.de - Member

Avatar #avatar-3068.jpg


Dabei seit:
Beiträge: 440
Herkunft: Untermeitingen

beantworten | zitieren | melden

Zitat von Krumnix
Es kommt die Meldung:
Fehler: Aufruf der internen Funktion zur Übertragung der Datei auf die Steuerung fehlgeschlagen. Grund: Der Aufrufpfad beinhaltet Leerzeichen, was nicht erlaubt ist.

Suche doch einfach mal in deinem Program nach dieser Meldung - Ich vermute dein Program analysiert seinen Startpfad und wenn dort Leerzeichen enthalten sind, bringt er eben diese Fehlermeldung...
private Nachricht | Beiträge des Benutzers
david.m
myCSharp.de - Member



Dabei seit:
Beiträge: 113

beantworten | zitieren | melden

Ich verstehe es so, die Meldung kommt vom externen Programm für das kein Zugriff auf den Quellcode vorhanden ist. Und dann hilft wohl nur sich an den Entwickler des Programms zuwenden.
private Nachricht | Beiträge des Benutzers
Krumnix
myCSharp.de - Member



Dabei seit:
Beiträge: 115
Herkunft: Schweiz

Themenstarter:

beantworten | zitieren | melden

@david.m: Genau. Und das macht mir zu schaffen :) Aber habs mit der Sonderlösung jetzt im Griff. Unschön, aber läuft.
private Nachricht | Beiträge des Benutzers