Komandozeilenparameter/CMD Pfad Angabe

Gast #5602688
Lesenswert?

Hallo,
wenn ich mein Programm durch Doppelklick starte gibt es mir den 
Kompletten Pfad heraus. So erwarte ich es auch…
Aber wenn ich das Programm durch ein Bachskript starte wird nur der .exe 
Name ausgegeben.
1
printf("%s\n", argv[0]);
Wieso wird durch das sparten mit Bach der Pfad nicht komplett 
ausgegeben?
Wie kriegt man den kompletten Pfad wenn man ein Programm durch das 
Bachskript startet?

Sys ist Win 7
Danke.
#5602752
Lesenswert?

ich weiß war nicht wie deine batch aussieht und was sie genau können 
soll.
Aber folgendes ist evtl. hilfreich bei so wenig Information.

erstmal ein % zeichen für das Argument
dann ein
~d für die drive
oder
~p für path
oder
~n für filename
kombiniert als ~dp für drive + path
oder noch besser ~dpn für drive + path + filename...
jetzt noch ne 0 dahinter da du den filename der Datei haben möchtest. 1 
für das erste argument 2 fürs weite und so weiter.

%~dpn0 für drive+path+filename als ausgabe.
falls du noch mehr ausgeben lassen möchtest, kannst du hier nachschlagen 
was alles so möglich ist:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490909(v=technet.10)
Persönliche Seite #5602811
Lesenswert?

Hans schrieb:
> Wie kriegt man den kompletten Pfad wenn man ein Programm durch das
> Bachskript startet?

Indem Du den übergebenen relativen Pfad in einen absoluten konvertierst.

https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfullpathnamea

Dann kann Dein Programm auch per Ba_t_chskript gestartet werden, oder 
aus der Eingabeaufforderung, oder wie auch immer.

Daß beim Doppelklick der komplette Pfad übergeben wird, ist eine 
Eigenheit des Explorers.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren