Seite 1 von 1

eine Verzeichnisebene höher

Verfasst: 10.10.2022 16:30
von stab
Hallo,

um eine Verzeichnisebende höher zu gelangen, habe ich mir das hier gebastelt:

Code: Alles auswählen

dir$ = "C:\Programme\Anwendung\bin\"

For d = 1 To CountString(dir$,"\")-1
  neudir$ = neudir$ + StringField(dir$,d,"\") + "\"
Next

Debug neudir$
Gibt es da etwas anderes?

auf Windows Kommandozeilenebene reicht ja ein "cd.."

Re: eine Verzeichnisebene höher

Verfasst: 10.10.2022 16:37
von Axolotl
Moin,
natürlich, es gibt immer (viele) verschiedene Lösungen ...
Mir gefällt das hier am Besten:

Code: Alles auswählen

neudir$ = GetPathPart(RTrim(dir$, #PS$))  ; #PS$ == "\" 
Debug neudir$ 

oder als Marco oder Procedure

Code: Alles auswählen

; Macro GetParentDirectory(Directory) 
;   GetPathPart(RTrim(Directory, #PS$)) 
; EndMacro 

Procedure.s GetParentDirectory(Directory$) 
  ProcedureReturn GetPathPart(RTrim(Directory$, #PS$))  
EndProcedure 

Re: eine Verzeichnisebene höher

Verfasst: 10.10.2022 17:01
von stab
Das gefällt mir auch sehr gut !!!

Ich wusste nicht bzw. hatte nicht getestet, dass GetPathPart() so einfach den Pfad eines Verzeichnisses zurückgibt.

Code: Alles auswählen

t$ = "::<>st1\test2.safsa.__,,,---))))88888///sadf\Qqqq°     °°^^^^Ä+*+;;,...$%§]\]sa.sadfsa.sdaffsasf."
Debug GetPathPart(t$)

Vielleicht sollte die Hilfe doch so lauten:

Kürzt einen String vom Ende bis auf das erste Vorkommen eines Backslashes!

Danke, danke!

Re: eine Verzeichnisebene höher

Verfasst: 10.10.2022 20:47
von STARGÅTE
Du kannst an den Pfad auch einfach ein ".." hängen und gelangst so eine Ebene nach oben.

"C:\Programme\Anwendung\bin\..\" ist also das gleiche wie "C:\Programme\Anwendung\" ohne, dass du irgendwas abschneiden musst.

Re: eine Verzeichnisebene höher

Verfasst: 11.10.2022 08:50
von stab
Das ist ja cool ...

Obwohl ich glaube, mich mit der Kommandozeile gut auszukennen (bin damit aufgewachsen), kannte ich diese Syntax noch nicht.

Code: Alles auswählen

Debug GetCurrentDirectory()
SetCurrentDirectory(GetCurrentDirectory()+"..")
Debug GetCurrentDirectory()


Danke !