[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt [Mac] Ordner mit Slash im Namen anlegen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

[Mac] Ordner mit Slash im Namen anlegen

Martin Fischer
  
Beiträge gesamt: 12783

13. Feb 2015, 06:15
Beitrag # 1 von 14
Bewertung:
(9956 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

vorneweg: es ist gar keine gute Idee und ich streube mich heftig dagegen in Datei- oder Ordnernamen reservierte Zeichen wie Backslash, Slash oder Doppelpunkt zu verwenden, aber es ist Teil einer Aufgabe, die eben mal so erledigt sein will.

Ist es möglich, (auf dem Mac) per JavaScript einen Ordner mit einem Slash im Namen anzulegen?

Code
var folder_name = '~/Desktop/Test/Test'; 
Folder(folder_name).create();

erzeugt auf dem Schreibtisch einen Ordner "Test" mit einem Ordner "Test" darin.

Das Escapen des Slashes im Ordnernamen liefert dasselbe Ergebnis:
Code
var folder_name = '~/Desktop/Test\/Test';  
Folder(folder_name).create();



Code
var folder_name = '~/Desktop/Test'; 
Folder(folder_name).create();
Folder(folder_name).rename ('Test/Test');

Der auf dem Schreibtisch erzeugte Ordner "Test" lässt sich nicht in "Test/Test" umbenennen.

Auch nicht, wenn man den Slash escaped.
Code
var folder_name = '~/Desktop/Test'; 
Folder(folder_name).create();
Folder(folder_name).rename ('Test\/Test');


Erst der folgende Code führt zum Ziel:
Code
var folder_name = '~/Desktop/Test'; 
Folder(folder_name).create();
Folder(folder_name).rename ('Test:Test');


Auf direktem Weg geht das aber auch nicht (selbst wenn der Doppelpunkt escaped wird):
Code
var folder_name = '~/Desktop/Test:Test';  
Folder(folder_name).create();



Gibt es einen Weg, so einen Namen mit Slash darin gleich bei der Erzeugung mitzugeben?


Die Aufgabe:
Aus einer alten Ordnerstruktur mit Wildwüchsen aller Art sollen bestimmte Daten in einen Archivordner verschoben werden, in dem dieselbe Ordnerstruktur abgebildet werden soll. Nun kommt es vor, dass in der alten Ordnerstruktur sich teilweise Ordner mit einem Slash im Namen verstecken.
Wenn ich diese Namen über 'name', 'fsName' etc. auswerte, erscheint der Slash als Doppelpunkt.
File.encode() und File.decode() helfen nicht weiter.
Einzig über 'displayName' wird der Slash im Namen mit ausgegeben.
Code
$.writeln( Folder('~/Desktop/Test:Test').displayName ); // -> Test/Test 


Wie stelle ich es - abgesehen von der verdrängten Dummheit - am geschicktesten an, einen Ordnernamen mit Slash aus einer gegebenen Ordnerstruktur zu ermitteln/übernehmen und diesen einem neu erzeugten Ordner zuzuweisen (herüberzuretten)?

(Dieser Beitrag wurde von Martin Fischer am 13. Feb 2015, 06:17 geändert)
X

[Mac] Ordner mit Slash im Namen anlegen

WernerPerplies
Beiträge gesamt: 2762

13. Feb 2015, 06:51
Beitrag # 2 von 14
Beitrag ID: #537037
Bewertung:
(9940 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Herr Fischer,

/\: sind reservierte Delimiter für OrdnerPUNKT

Der : ist Delimiter auf dem Mac (ich glaube im alten Betriebssystem).

Wenn es Ihnen irendwie gelingt einen Verzeichnis- oder Dateinamen mit solch einem Zeichen zu erzeugen, ist das ein Fehler in der erzeugenden Routine des Betriebssystemes und sie werden regelmäßig Ärger bei der Verarbeitung dieser Dateien haben.

Spätestens, wenn dieser Fehler gefixt wird, werden Sie auf solch eine Datei nicht mehr zugreifen können.

Für die Umwandlung der möglichen unterschiedlichen Namenssysteme hat Adobe Indesign das außerordentlich leistungsfähige File-Object entwickelt:

Hier gilt (Auszug):

File("Pfad").absoluteURI -> URI-Notation des verwendeten Pfades
File("Pfad").display -> der lokalisierte, angezeigte Name des Pfades
File("Pfad").fsName -> die Notation des verwendeten Betriebssystems
File("Pfad").fullName -> der ganze Pfad des Betriebssystemes
File("Pfad").name -> Dateiname
File("Pfad").relaiveURI -> relativer Pfad

Wegen dieser vielen unterschiedlicher Möglichkeiten sollte man in Indesign, wann immer möglich, das FileObject verwenden, Extended Script kümmert sich um den Rest.

Wenn ein Sting als Pafad verlangt wird:
File("Pfad").fullName.

Dann geht zum Beispiel auch so etwas:
File("c:\\user/Emil\\text.txt")
Ob das auch mit dem Doppelpunkt klappt müssten Sie mal probieren.


als Antwort auf: [#537036]

[Mac] Ordner mit Slash im Namen anlegen

WernerPerplies
Beiträge gesamt: 2762

13. Feb 2015, 07:34
Beitrag # 3 von 14
Beitrag ID: #537038
Bewertung:
(9926 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ach ja, noch eine Ergänzung:

Die eventuell vorhandenen Slashes in Dateinamen (altes Mac-Betriebsystem?) ersetzen Sie am besten durch ein Ersatzzeichen, oder wenn der Kunde auf einem Slash besteht, stiften Sie ein neues Slash im entsprechenden Systemfont.

Aber dann muss dieser Font natürlich immer vorhanden sein.

Alternativen könnten vielleicht auch:
U002F, U2044, U27CB
sein, sofern vorhanden.


als Antwort auf: [#537036]

[Mac] Ordner mit Slash im Namen anlegen

Martin Fischer
  
Beiträge gesamt: 12783

13. Feb 2015, 07:35
Beitrag # 4 von 14
Beitrag ID: #537039
Bewertung:
(9927 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Herr Perplies,

das File-Object ist mir bekannt und ich habe damit zu diesem Problem allerhand Tests und Versuche unternommen, ohne auf einen grünen Zweig gekommen zu sein.

Ein Ordner "Avemarie/Lichtenberger" im Pfad "/Server_1/Archive/010509-201" wird ausgelesen als

/Server_1/Archive/010509-201/Avemarie:Lichtenberger


Code
var pfad = "/Server_1/Archive/010509-201/Avemarie:Lichtenberger"; 
$.writeln("absoluteURI:\t" + File(pfad).absoluteURI);
$.writeln("display:\t" + File(pfad).display);
$.writeln("fsName:\t" + File(pfad).fsName);
$.writeln("fullName:\t" + File(pfad).fullName);
$.writeln("name:\t" + File(pfad).name);
$.writeln("relaiveURI:\t" + File(pfad).relaiveURI);


Ergebnis:
Code
absoluteURI:	/Server_1/Archive/010509-201/Avemarie:Lichtenberger 
display: undefined
fsName: /Server_1/Archive/010509-201/Avemarie:Lichtenberger
fullName: /Server_1/Archive/010509-201/Avemarie:Lichtenberger
name: Avemarie:Lichtenberger
relaiveURI: undefined
Ergebnis: undefined


Aber das alles hilft mir nicht weiter.
Denn Folder("/Server_1/Archive/010509-201/Avemarie:Lichtenberger").create() erzeugt keinen Ordner "/Server_1/Archive/010509-201/Avemarie/Lichtenberger" sondern mur "/Server_1/Archive/010509-201"

Dasselbe mit
Folder("~/Desktop/Archive/010509-201/Avemarie\:Lichtenberger").create();

Folder("~/Desktop/Archive/010509-201/Avemarie\/Lichtenberger").create();
erzeugt einen Unterornder "Lichtenberger" im Ordner "Avemarie" im Ordner "010509-201".

Es gelingt mir nicht, einen Ordner "Avemarie/Lichtenberger" direkt anzulegen.
Es gelingt nur, wenn ein Ordner "Avemarie_Lichtenberger" angelegt wird und danach umbenannt wird:

Code
Folder("~/Desktop/Archive/010509-201/Avemarie_Lichtenberger").create(); 
Folder("~/Desktop/Archive/010509-201/Avemarie_Lichtenberger").rename("Avemarie:Lichtenberger")


Aber so langsam habe ich die Nase voll mit Versuchen, etwas "auf Teufel komm raus" zu erzeugen, das riskant und gefährlich ist, nur um einen Spiegel des Istzustands anzulegen.


als Antwort auf: [#537037]

[Mac] Ordner mit Slash im Namen anlegen

WernerPerplies
Beiträge gesamt: 2762

13. Feb 2015, 07:43
Beitrag # 5 von 14
Beitrag ID: #537040
Bewertung:
(9922 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wie wäre es denn damit?
Code
Folder("C:\\Users\\Werner Perplies\\Documents\\!VS\\Deutsch\\!TestDateien\\Chapters\\Pages\\P0001\\Frames\\IAP0-1BaseFrame\\Js\\paras\\Fritz\u2044Sport").create(); 



als Antwort auf: [#537039]

[Mac] Ordner mit Slash im Namen anlegen

Martin Fischer
  
Beiträge gesamt: 12783

13. Feb 2015, 08:51
Beitrag # 6 von 14
Beitrag ID: #537042
Bewertung:
(9865 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das mit dem Fraction-Slash ist eine nette Idee.

Allerdings aus zwei Gründen nicht tauglich:
1. auf dem Mac sieht das am Ende etwas irritierend aus: Bildschirmfoto
2. ein Fraction-Slash ist ein Fraction-Slash und kein Slash. ;-)

Mein Workaround wäre jetzt wie folgt (gewesen):
1. Prüfung (match), ob ein Doppelpunkt im Pfad des ermittelten Ordners vorkommt; wenn ja, dann
2. temporäres Ersetzen der Doppelpunkte im Pfad durch einen eindeutigen Ausdruck ("_I_WONNA_BE_A_SLASH_");
3. Erzeugen des Ordners
4. Umbenennung - replace(/_I_WONNA_BE_A_SLASH_/g, '/') - dieses Behelfsausdrucks. Fertig.

Aber inzwischen habe ich die Erlaubnis, alle diese problematischen Zeichen durch den Unterstrich zu ersetzen.


als Antwort auf: [#537040]
(Dieser Beitrag wurde von Martin Fischer am 13. Feb 2015, 08:52 geändert)

[Mac] Ordner mit Slash im Namen anlegen

WernerPerplies
Beiträge gesamt: 2762

13. Feb 2015, 09:00
Beitrag # 7 von 14
Beitrag ID: #537043
Bewertung:
(9853 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,
Zitat Das mit dem Fraction-Slash ist eine nette Idee.


Das sollte nur das Prinzip demonstrieren und das Auge befriedigen.

Und natürlich hätte es nicht Funktionalität des Slashes. Aber das soll ja auch nicht sein, denn dann wäre es wieder ein Delimiter, der nicht in den Namen gehört!

Zitat Aber inzwischen habe ich die Erlaubnis, alle diese problematischen Zeichen durch den Unterstrich zu ersetzen.


Gut, aber für mich wäre das nur die zweitbeste Lösung, weil damit die ursprüngliche Bedeutung verloren geht.

Ich ziehe da die Lösung vor, für jedes nicht erlaubte Zeichen ein anderes Zeichen als Ersatz zu verwenden vor, damit bleibt die Bedeutung erhalten.

Ok, eredigt! ;-)


als Antwort auf: [#537042]

[Mac] Ordner mit Slash im Namen anlegen

Martin Fischer
  
Beiträge gesamt: 12783

13. Feb 2015, 09:09
Beitrag # 8 von 14
Beitrag ID: #537044
Bewertung:
(9849 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Ok, eredigt! ;-)


Genau, beerdigt. ;-)



Vielen Dank für die intensive Aufmerksamkeit und Unterstützung!


als Antwort auf: [#537043]

[Mac] Ordner mit Slash im Namen anlegen

Uwe Laubender
Beiträge gesamt: 5318

13. Feb 2015, 12:54
Beitrag # 9 von 14
Beitrag ID: #537055
Bewertung:
(9669 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!

Genau dieses Thema holt mich auch gerade ein.
Nur kurioserweise etwas anders.

Deshalb Danke an Dich und Werner zu den sehr interessanten Beiträgen hier.

Kurz erklärt:
Der FixedLayout EPUB-Export von InDesign CC-2014.2 verlangt für die Zuweisung und Einbindung externer Quellen wie CSS- und JS-Dateien einen Dateipfad. Kein Thema, dachte ich, schreibe ich den eben aus dem File der benutzten CSS-Datei oder dem Pfad der benutzten JS-Datei raus und füge ihn ein.

Pustekuchen. Das ging schief. Aber dermaßen.
Der String des Pfades muss exakt so aufgebaut und geschrieben werden wie in meinem kleinen Beispiel hier als Screenshot angehängt.

Allgemeines Beispiel:

Code
"NameDesVolumes:NameDesOrdners:NameDesUnterOrdners:externeDatei.css" 


Details zum Thema hier:
Script EPUB export not including JS/CSS with epubFixedLayoutExportPreferences
https://forums.adobe.com/thread/1702083

Falls dann doch noch Slashes in Ordnernamen oder Dateinamen vorkommen und diese dann durch ":" ersetzt werden, kommt man in Schwierigkeiten.
Unabhängig jetzt vom Problem, dass man ohne AppleScript nicht an den Namen des Volumes kommt.


als Antwort auf: [#537044]
Anhang:
NestedFolderWithSlash.png (30.8 KB)

[Mac] Ordner mit Slash im Namen anlegen

Martin Fischer
  
Beiträge gesamt: 12783

13. Feb 2015, 13:22
Beitrag # 10 von 14
Beitrag ID: #537056
Bewertung:
(9653 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Antwort auf: Falls dann doch noch Slashes in Ordnernamen oder Dateinamen vorkommen und diese dann durch ":" ersetzt werden, kommt man in Schwierigkeiten.


Welcome to the club!


als Antwort auf: [#537055]

[Mac] Ordner mit Slash im Namen anlegen

Uwe Laubender
Beiträge gesamt: 5318

15. Feb 2015, 19:33
Beitrag # 11 von 14
Beitrag ID: #537089
Bewertung:
(9389 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!

Mir hat mit meinem Problem Dirk Becker hervorragend weiterhelfen können.
Die Lösung erfordert allerdings AppleScript-Unterstützung.

Schau Dir mal folgendes Snippet an, das den Dateipfad (oder auch Folderpfad) als String in Posix-Form auslesen kann. Vielleicht gelingt Dir ja die Verzeichnisse per AppleScript nachzubauen. Du brauchst dann "nur" noch die geeignete create()-Methode für AppleScript umzusetzen.

Sollte als doScript() eingebaut in ein ExtendScript funktionieren:

Dirk Becker:
https://forums.adobe.com/message/7195249#7195249


als Antwort auf: [#537056]

[Mac] Ordner mit Slash im Namen anlegen

Martin Fischer
  
Beiträge gesamt: 12783

16. Feb 2015, 07:54
Beitrag # 12 von 14
Beitrag ID: #537102
Bewertung:
(9292 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

ich stand kurz davor, das JavaScript zum Aussortieren von Daten ab einem definierten Modifikationsdatum in eine gespiegelte Ordnerstruktur komplett in AppleScript umzusetzen.

Zumal es ausschließlich auf einem Mac zur Anwendung kommt.

Aber die Anforderung hat sich entschärft (Slashes in Ordnernamen dürfen durch Unterstrich ersetzt werden).
Außerdem hätte es in JavaScript noch den Workaround mit temporärer Ersetzung der Doppelpunkte beim Anlegen der Ordner durch einen signifikanten String und anschließendem rename()-Befehl gegeben.

Praktisch hat sich das Thema damit erledigt.


Hätte es bei Eurer Aufgabenstellung nicht genügt, den Dateipfad in URI-Notation auszulesen, den String nach '/' zu splitten und den Namen des Volumes als 2. Element des Arrays, also den String zwischen dem ersten und dem zweiten Slash auszulesen?

---
edit: nö, hätte es nicht.
Es ging nicht um irgendein Volume, sondern um das Startvolume.


als Antwort auf: [#537089]
(Dieser Beitrag wurde von Martin Fischer am 16. Feb 2015, 08:15 geändert)

[Mac] Ordner mit Slash im Namen anlegen

Uwe Laubender
Beiträge gesamt: 5318

16. Feb 2015, 08:49
Beitrag # 13 von 14
Beitrag ID: #537103
Bewertung:
(9268 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!

Zu Deinem Edit:
Korrekt erkannt.

Allgemeiner gesprochen:
Ich brauchte den Namen des Volumes, auf dem die externe CSS-Datei oder die JS-Datei liegt.


als Antwort auf: [#537102]

[Mac] Ordner mit Slash im Namen anlegen

Uwe Laubender
Beiträge gesamt: 5318

26. Mär 2016, 22:29
Beitrag # 14 von 14
Beitrag ID: #548387
Bewertung:
(7519 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Um das Thema Name des Volumes eines Pfades nochmal aufzuwärmen:

//Ergänzung: Getestet auf OSX 10.7.5

Code
// Harbs von Intools: 
// Name of the startup volume

File("/").parent.displayName;


Namen von internen Volumes, Volumes per USB und per VPN-Verbindungen lassen sich vom Startup-Volume unterscheiden:

Code
var projectPath = Folder.selectDialog("Chose Project Path."); 
if(projectPath == undefined){exit()};

var nameOfStartUpVolume = File("/").parent.displayName;

if(projectPath.fsName.split("/")[1] != "Volumes")
{
alert
(

"1. Path on startup volume:"+"\r"+
nameOfStartUpVolume+"\r"+"\r"+
"Path fsName:"+"\r"+
projectPath.fsName

)
exit();
}

if(projectPath.fsName.split("/")[1] == "Volumes")
{
alert
(

"2. Path not on startup volume:"+"\r"+
projectPath.fsName.split("/")[2]+"\r"+"\r"+
"Path fsName:"+"\r"+
projectPath.fsName

);
exit();
}


Ich kann leider nicht testen, ob das für andere Netzwerkverbindungen auch gilt.


als Antwort auf: [#537103]
(Dieser Beitrag wurde von Uwe Laubender am 26. Mär 2016, 22:31 geändert)
X