subst.exe mit RunProgram aufrufen

Anfängerfragen zum Programmieren mit PureBasic.
Zizer
Beiträge: 7
Registriert: 10.03.2008 21:39

subst.exe mit RunProgram aufrufen

Beitrag von Zizer »

Hallo !
Das im Windos-Betriebssystem vorhandene Programm "SUBST.EXE" kann ich entweder manuell oder in einer Batchdatei erfolgreich ausführen, so dass ich ein beliebigen Ordner einer lokalen Festplatte mit einem LW-Buchstaben versehen kann.
Beispiel:

Code: Alles auswählen

subst y: "c:\Program Files\PureBasic"
Eine Umsetzung in PB mit RunProgamm gelingt mir nicht, obwohl der Compiler keine Fehler anzeigt.

Code: Alles auswählen

RunProgram("subst"," y:","c:\Program Files\PureBasic")
Was mache ich falsch?

Kann mir jemand helfen? :)
Geduld, nur Geduld !
Vista mit SP2 (32-Bit), PureBasic 4.31
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Code: Alles auswählen

RunProgram("subst", "y: " + Chr(34) + "C:\Program Files\PureBasic" + Chr(34), GetCurrentDirectory())
Du hast die 2 Parameter aufgeteilt.

[EDIT]
Hab Kaerus Beitrag nachträglich berücksichtigt. Bei mir gings ohne weil ich einen Leerzeichenlosen Pfad verwendet habe.
Zuletzt geändert von DarkDragon am 03.08.2009 10:45, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

und in deinem RunProgram-Aufruf fehlen die Anführungszeichen, die im Aufruf an der Kommandozeile Bestandteil des Befehls sind.

füge also in deinem zweiten Parameter die Anführungszeichen zum Übergebenen String hinzu mittels Chr().
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Zizer
Beiträge: 7
Registriert: 10.03.2008 21:39

subst.exe mit RunProgram aufrufen

Beitrag von Zizer »

@DarkDragon , @Kaeru Gaman
Vielen Dank für Eure Unterstützung.
Der Code funtioniert...

Code: Alles auswählen

RunProgram("subst", "y: " + Chr(34) + "C:\Program Files\PureBasic" + Chr(34), GetCurrentDirectory())

Nachdem ich den Code in PureBasic kopiert und compiliert hatte, wurde "subst" allerdings noch nicht ausgeführt !

Erst als ich eine EXE-Datei erstellt und diese dann gestartet hatte, wurde das LW erstellt.


Woran kann das liegen?
Muss ich in PB spezielle Konfigurationen vornehmen?

Was bewirkt die Angabe "GetCurrentDirectory()" genau?
Wenn ich diese gegen einen Leerstring "" austausche, und wieder eine EXE-Datei erstelle, funktioniert
"subst" trotzdem...

Code: Alles auswählen

RunProgram("subst", "y: " + Chr(34) + "C:\Program Files\PureBasic" + Chr(34), "")
@mk-soft
Vielen Dank für den Tipp mit der WinAPI Library.
Ich bin allerdings wirklich noch blutiger Anfänger in PB,
obwohl ich PB schon vor längerer Zeit erworben habe.
Arbeit, Familie und Krankheit ließen hier bislang keine Zeit hierfür.

Gruß
Zizer
Geduld, nur Geduld !
Vista mit SP2 (32-Bit), PureBasic 4.31
Little John

Re: subst.exe mit RunProgram aufrufen

Beitrag von Little John »

Zizer hat geschrieben:Nachdem ich den Code in PureBasic kopiert und compiliert hatte, wurde "subst" allerdings noch nicht ausgeführt !

Erst als ich eine EXE-Datei erstellt und diese dann gestartet hatte, wurde das LW erstellt.


Woran kann das liegen?
Keine Ahnung. Ich kann nur sagen, dass bei mir folgender Code

Code: Alles auswählen

LaufWerk$ = "y:"
Pfad$ = #DQUOTE$ + "c:\Program Files\PureBasic" + #DQUOTE$
RunProgram("subst", LaufWerk$ + " " + Pfad$, "")
innerhalb der IDE funktioniert (PB 4.31 auf Windows XP). Ich brauche nicht extra eine EXE-Datei zu erstellen.
Zizer hat geschrieben:Was bewirkt die Angabe "GetCurrentDirectory()" genau?
Wenn ich diese gegen einen Leerstring "" austausche, und wieder eine EXE-Datei erstelle, funktioniert
"subst" trotzdem...
GetCurrentDirectory() ist hier nicht nötig.

Gruß, Little John
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: subst.exe mit RunProgram aufrufen

Beitrag von DarkDragon »

Little John hat geschrieben:
Zizer hat geschrieben:Was bewirkt die Angabe "GetCurrentDirectory()" genau?
Wenn ich diese gegen einen Leerstring "" austausche, und wieder eine EXE-Datei erstelle, funktioniert
"subst" trotzdem...
GetCurrentDirectory() ist hier nicht nötig.

Gruß, Little John
GetCurrentDirectory() wäre dann nötig, wenn man relative Pfade angibt (Wobei ich nicht sicher bin ob das überhaupt geht).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: subst.exe mit RunProgram aufrufen

Beitrag von ts-soft »

DarkDragon hat geschrieben: GetCurrentDirectory() wäre dann nötig, wenn man relative Pfade angibt (Wobei ich nicht sicher bin ob das überhaupt geht).
Aber auch nur wenn vorher sichergestellt wurde, das GetCurrentDirectory
auf das Programmverzeichnis zeigt, was ja nicht immer der Fall ist!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: subst.exe mit RunProgram aufrufen

Beitrag von DarkDragon »

ts-soft hat geschrieben:
DarkDragon hat geschrieben: GetCurrentDirectory() wäre dann nötig, wenn man relative Pfade angibt (Wobei ich nicht sicher bin ob das überhaupt geht).
Aber auch nur wenn vorher sichergestellt wurde, das GetCurrentDirectory
auf das Programmverzeichnis zeigt, was ja nicht immer der Fall ist!
Klar. Aber das ist für mich ein besserer Standardwert als "" für das Arbeitsverzeichnis. Denn es könnte genauso gut sein, dass subst.exe dann wieder eine EXE aufruft die das Verzeichnis benötigt (Ich weiß ja nicht was subst.exe genau macht ;-) ).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Zizer
Beiträge: 7
Registriert: 10.03.2008 21:39

subst.exe mit RunProgram aufrufen

Beitrag von Zizer »

Hi Little John !
Dein Code funtioniert auch auf meinem Laptop:

Code: Alles auswählen

LaufWerk$ = "y:"
Pfad$ = #DQUOTE$ + "c:\Program Files\PureBasic" + #DQUOTE$
RunProgram("subst", LaufWerk$ + " " + Pfad$, "")
Allerdings auch erst nach der EXE-Erstellung.
Liegt vielleicht an Vista...
Ich werde es an meinem Desktop mit Win-XP nochmals testen.
Dann habe ich in der Help-Datei gesucht, aber ich kann keine Hinweise über die Konstante
#DQUOTE$
finden !.

Soll dies ein doppeltes " bedeuten?
Servus, Zizer
Geduld, nur Geduld !
Vista mit SP2 (32-Bit), PureBasic 4.31
Antworten