Verzeichnis mit " ' " im Namen als Parameter

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
Lucky Joe
Member
Member
Posts: 169
Joined: 2012-07-25, 10:30 UTC

Verzeichnis mit " ' " im Namen als Parameter

Post by *Lucky Joe »

Hallo zusammen,
ich bin mir nicht ganz sicher, ob mein Thema hierher gehört, aber weil es mit Parametern zu tun hat, erlaube ich mir folgende Frage:
Bei einem Autohotkey-Script (v2) möchte ich den Total Commander mit Parametern (einem Dateiverzeichnisnamen) aufrufen, so dass er das Verzeichnis in einem seiner Fenster öffnet.
Das gelingt, solange der Dateiname keinen Apostroph (') (also kein Shift-#) enthält. Mit folgendem Script springt der TC nur zu "D:\xxx", während der Windows-Explorer in das "richtige" Verzeichnis (D:\xxx\' Test) springt:

Code: Select all

#Requires AutoHotkey v2.0
Verz := "d:\xxx\' Test\"
MyTC := "[Pfad zum]\TOTALCMD64.EXE"
MyEx := "Explorer.EXE"

Run MyTC . " /O /S /L=" . Verz
Run MyEx . " " . Verz
Wie muss ich den Parameter im Script formulieren (oder den Apostroph maskieren?)?

Danke für's Lesen.
Herzliche Grüße aus dem Rheinland
Lucky Joe
User avatar
white
Power Member
Power Member
Posts: 5747
Joined: 2003-11-19, 08:16 UTC
Location: Netherlands

Re: Verzeichnis mit " ' " im Namen als Parameter

Post by *white »

Code: Select all

Verz := '"d:\xxx\`' Test\"'
Und empfohlen:

Code: Select all

MyTC := '"[Pfad zum]\TOTALCMD64.EXE"'
Fla$her
Power Member
Power Member
Posts: 2982
Joined: 2020-01-18, 04:03 UTC

Re: Verzeichnis mit " ' " im Namen als Parameter

Post by *Fla$her »

Code: Select all

Verz := "`"d:\xxx\' Test\`""
MyTC := "`"[Pfad zum]\TOTALCMD64.EXE`""
Overquoting is evil! 👎
User avatar
Lucky Joe
Member
Member
Posts: 169
Joined: 2012-07-25, 10:30 UTC

Re: Verzeichnis mit " ' " im Namen als Parameter

Post by *Lucky Joe »

Hallo und Danke; ich habe mich für white's Lösung entschieden, da in meinem "echten" Script der Verzeichnisname selbst auch noch in einer Variablen steckt. Zur Übersicht in zwei Zeilen:

Code: Select all

Verzeichnis := '"' . Verzeichnis . '"'
Verzeichnis := StrReplace(Verzeichnis, "'", "`'")
Auch die Pfadanagabe zum TC halte ich für etwas "lesbarer" (und kürzer):

Code: Select all

MyTC := '"[Pfad zum]\TOTALCMD64.EXE"'
Trotzdem auch dir, Fla$her, vielen Dank für eine weitere Lösung!
Herzliche Grüße aus dem Rheinland
Lucky Joe
User avatar
white
Power Member
Power Member
Posts: 5747
Joined: 2003-11-19, 08:16 UTC
Location: Netherlands

Re: Verzeichnis mit " ' " im Namen als Parameter

Post by *white »

Der Backtick war in dem von mir angegebenen Code erforderlich. Aber er ist nicht erforderlich, wenn Sie den von Ihnen verwendeten Code verwenden.
Lucky Joe wrote: 2025-01-20, 23:43 UTC

Code: Select all

Verzeichnis := StrReplace(Verzeichnis, "'", "`'")
Diese Zeile bewirkt nichts (sie ersetzt das Anführungszeichen durch das gleiche Anführungszeichen). Sie können es einfach weglassen.
User avatar
Lucky Joe
Member
Member
Posts: 169
Joined: 2012-07-25, 10:30 UTC

Re: Verzeichnis mit " ' " im Namen als Parameter

Post by *Lucky Joe »

Stimmt (ist irgendwie auch logisch, wenn der Verzeichnisname in Anführungsstrichen steht) – wieder eine Zeile kürzer. Danke :-)
Herzliche Grüße aus dem Rheinland
Lucky Joe
Fla$her
Power Member
Power Member
Posts: 2982
Joined: 2020-01-18, 04:03 UTC

Re: Verzeichnis mit " ' " im Namen als Parameter

Post by *Fla$her »

Lucky Joe wrote: 2025-01-20, 23:43 UTC Auch die Pfadanagabe zum TC halte ich für etwas "lesbarer" (und kürzer):
Aber meine Methode ist besser für Fälle, in denen ein Name viele Apostrophe enthält. ;)
Overquoting is evil! 👎
User avatar
Lucky Joe
Member
Member
Posts: 169
Joined: 2012-07-25, 10:30 UTC

Re: Verzeichnis mit " ' " im Namen als Parameter

Post by *Lucky Joe »

Fla$her wrote: 2025-01-21, 09:57 UTC Aber meine Methode ist besser für Fälle, in denen ein Name viele Apostrophe enthält. ;)
Das kann ich eigentlich nicht ganz glauben: gibt es eine zahlenmäßige Begrenzung der Apostrophe ('), wenn das Verzeichnis als Variable in Anführungszeichen gesetzt ist? Ich habe einige Beispiele ausprobiert, selbst wenn am Ende ein Apostroph steht, funktioniert es bei mir:

Code: Select all

d:\xxx\' _\t\Hallo ' Test' noch einer ' und noch einer '' Test4\'\am Ende mit 2''
Aber nichts für ungut: deine Lösung funktioniert und nochmals Danke für deine Beschäftigung damit. :wink:
Herzliche Grüße aus dem Rheinland
Lucky Joe
Post Reply