Problem mit Leerzeichen beim Ausführen von Shell-Befehlen in AppleScript


11

Der folgende Code zum rekursiven Löschen eines Verzeichnisses funktioniert nicht, da ich den Anwendungsunterstützungsordner nicht passieren kann.

try
    do shell script "rm -r ~/Library/Application\ Support/Google/Chrome/Default/Pepper Data/Shockwave Flash"
end try
  • Wenn ich benutze ~/Library/Application Support/Google..., passiert nichts. Welches wird erwartet.
  • Wenn ich verwende, ~/Library/Application\ Support/Google...kann ich das Skript aufgrund der Fehlermeldung nicht speichern:Syntax Error Expected “"” but found unknown token.

Wie kann ich diesen Fehler umgehen?

Antworten:


10

Versuchen:

set pathwithSpaces to "/Users/John/Desktop/This is a test.docx"
do shell script "rm -r " & quoted form of pathwithSpaces

7

Sie müssen die Backslashes verdoppeln und auch den anderen Leerzeichen entkommen:

do shell script "rm -r ~/Library/Application\\ Support/Google/Chrome/Default/Pepper\\ Data/Shockwave\\ Flash"

oder entkommen Sie dem Weg auf andere Weise:

do shell script "rm -r ~/'Library/Application Support/Google/Chrome/Default/Pepper Data/Shockwave Flash'"

quoted form ofersetzt 'mit '\''und umgibt den String mit einfachen Anführungszeichen, so dass es nicht mit Pfaden, die mit Start funktioniert ~/.


2
do shell script "open -n /Applications/App\\ Store.app"

Behandeln Sie das spacemit \\.

Zum Beispiel ersetzen App Store.appdurch App\\ Store.app.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.