[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Folder-Objekt mit Pfad als Argument

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

Folder-Objekt mit Pfad als Argument

J.Puff
Beiträge gesamt: 238

31. Mär 2020, 19:05
Beitrag # 1 von 62
Bewertung:
(7588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich habe das Problem, dass ich einen Ordner nicht über einen Pfad als Argument bekomme.

Das klappt:
Code
var _fol = Folder.selectDialog(); 
var _fileArr = _fol.getFiles();


Das nicht:
Code
var _fol = Folder.selectDialog(); 
var _path = _fol.fsName; // oder _fol.fullName, kein Unterschied im Ergebnis
var _fol2 = Folder(_path);
var _fileArr = _fol2.getFiles();


Allerdings tritt das Problem unter Windows und bei Photoshop (CC 2019) auf. Ich gehe aber davon aus, dass das Verhalten äquivalent zu InDesign sein müsste.

Weiß jemand Rat?
X

Folder-Objekt mit Pfad als Argument

Uwe Laubender
Beiträge gesamt: 5316

31. Mär 2020, 21:00
Beitrag # 2 von 62
Beitrag ID: #574693
Bewertung:
(7572 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,
mach' Dir mal Gedanken darüber, was genau Folder.selectDialog() zurückggibt.
Genau. Ein Folder-Objekt. Oder null, wenn der Benutzer den Dialog abbricht.

Teste mal, was dann _fol.fsName zurückgibt. Beispielsweise so:
Code
_fol.fsName.constructor.name 


Und, was sagt die JavaScript-Konsole oder ein alert(), das die Zeile auswertet?

Also. Spiel das bitte mal durch:

Code
( function() 
{

var fol1 = Folder.selectDialog();

// Do nothing if user pressed "Cancel" button:
if( fol1 == null ){ return };

$.writeln( fol1.constructor.name ); // Returns Folder

$.writeln( fol1.fsName.constructor.name ); // Returns String

var fol2 = Folder( fol1.fsName );
var filesOfFol2 = fol2.getFiles();

$.writeln( filesOfFol2.constructor.name ); // Returns Array

$.writeln( filesOfFol2.join("\r") );

}() )



als Antwort auf: [#574690]

Folder-Objekt mit Pfad als Argument

J.Puff
Beiträge gesamt: 238

31. Mär 2020, 21:19
Beitrag # 3 von 62
Beitrag ID: #574694
Bewertung:
(7558 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
danke für die Hinweise. Übersehe ich etwas oder gibt es keinen Unterscheid zu meinem zweiten, nicht funktionierenden, Code?

Tatsächlich führt auch Dein Code bei mir leider nicht zur Auflistung der Dateien, jedenfalls nicht unter Windows-Photoshop.

Beste Grüße
Johannes.


als Antwort auf: [#574693]

Folder-Objekt mit Pfad als Argument

WernerPerplies
Beiträge gesamt: 2762

1. Apr 2020, 07:33
Beitrag # 4 von 62
Beitrag ID: #574695
Bewertung:
(7510 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
moin Johannes,

wenn etwas nicht klappt, kann ein Blick in die Doku hilfreich sein:

Zitat If the user clicks OK, returns a File or Folder object for the selected file or folder. If the user cancels, returns null.


returns File or Folder or Null und Uwe testet auf Null bevor er getFiles() auf den vermeintlich ausgewählten Folder loslässt.

Ich treibe da noch ein wenig mehr Aufwand:
Code
alert(selectAllElementsOfFolder(Folder.current)); 
alert(selectAllElementsOfFolder());

/*Array*/function selectAllElementsOfFolder(/*Folder|String*/startFolder){
var /*Null|Folder|File|Function*/folder = null, /*Array*/files = [];
if (startFolder == null)
folder = Folder.selectDialog();
else{
if (typeof(startFolder) === "string")
startFolder = Folder(startFolder);
folder = startFolder.selectDlg();
}
if (folder != null){
if (folder.constructor.name == "File"){
folder = Folder(folder.path);
}
}
if (folder != null){
if (folder.constructor.name == "File"){
folder = Folder(folder.path);
}
files = folder.getFiles();
}
return files;
}



als Antwort auf: [#574694]
(Dieser Beitrag wurde von WernerPerplies am 1. Apr 2020, 07:45 geändert)

Folder-Objekt mit Pfad als Argument

J.Puff
Beiträge gesamt: 238

1. Apr 2020, 10:20
Beitrag # 5 von 62
Beitrag ID: #574703
Bewertung:
(7479 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
auch für diesen Hinweis vielen Dank.

Entweder sehe ich gerade den Baum im Wald nicht, oder hattet ihr den Code in Windows-PhotoShop nicht getestet?

Das Problem ist nicht, dass unklar wäre, was
Code
Folder.selectDialog() 

zurück gibt.

Das Problem ist, dass
Code
Folder(IrgendeinTextPfad) 

kein Ordner-Objekt zurückgibt! Obwohl es genauso in der Doku beschrieben ist.

Danke für eine Erläuterung.


als Antwort auf: [#574695]

Folder-Objekt mit Pfad als Argument

WernerPerplies
Beiträge gesamt: 2762

1. Apr 2020, 10:55
Beitrag # 6 von 62
Beitrag ID: #574704
Bewertung:
(7472 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

PhotoShop?
Was'n das? :-)

Nein, ernsthaft, ich arbeite nur mit InDesign.

Was ist denn IrgendeinTextPfad für ein Datentyp?


als Antwort auf: [#574703]

Folder-Objekt mit Pfad als Argument

J.Puff
Beiträge gesamt: 238

1. Apr 2020, 11:00
Beitrag # 7 von 62
Beitrag ID: #574705
Bewertung:
(7466 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja, es geht um Photoshop unter Windows.
Dazu gibt es leider keine Skriptwerkstatt, daher in diesem Forum gepostet.

IrgendeinTextPfad ist ein String mit Pfadangabe, so wie es
Code
Folder.fsName 

ausgibt.


als Antwort auf: [#574704]

Folder-Objekt mit Pfad als Argument

WernerPerplies
Beiträge gesamt: 2762

1. Apr 2020, 11:22
Beitrag # 8 von 62
Beitrag ID: #574706
Bewertung:
(7450 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Folder(Folder.fsName) sollte funktionieren, aber wozu brauchst Du dann Folder, Du hast doch bereits folder?

Zeig bite genau Deinen Code.

Existiert der Folder?

Wie sieht der ausgelesene String aus?

Falls Du den String als Text eingibst musst Du den "\" escapen.

versuche auch mal new Folder(folder.fsName), oder Folder(File(folder.fsName).path)

und zeige uns die jeweilige Ausgabe.


als Antwort auf: [#574705]

Folder-Objekt mit Pfad als Argument

J.Puff
Beiträge gesamt: 238

1. Apr 2020, 11:30
Beitrag # 9 von 62
Beitrag ID: #574707
Bewertung:
(7443 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
ich hatte versucht das in meinem ersten Post darzulegen.
Bitte teste einmal folgenden Code mit Windows-PhotoShop:

Code
var _fol = Folder.selectDialog();  
var _path = _fol.fsName; // oder _fol.fullName, kein Unterschied im Ergebnis
var _fol2 = Folder(_path);
var _fileArr = _fol2.getFiles();
alert(_fileArr.length);


Es geht hierbei darum zu zeigen, dass ein String in
Code
Folder(_path) 

nicht zu einem Folder-Objekt führt.
Im späteren Script, wird der Pfad aus einer Voreinstellung gelesen und soll die Dateien in dem Ordner wiedergeben.


als Antwort auf: [#574706]

Folder-Objekt mit Pfad als Argument

Uwe Laubender
Beiträge gesamt: 5316

1. Apr 2020, 11:45
Beitrag # 10 von 62
Beitrag ID: #574709
Bewertung:
(7434 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,
mit welcher PhotoShop-Version genau sollen wir testen?

Hab's gerade mit zwei Versionen durchgespielt:
PhotoShop CS6 Version 13.1.2
PhotoShop CC 2019 Version 20.0.9

Kein Problem, alles wie erwartet:

Code
( function()  
{

$.writeln( app.version );

var fol1 = Folder.selectDialog();

// Do nothing if user pressed "Cancel" button:
if( fol1 == null ){ return };

$.writeln( fol1.constructor.name ); // Returns Folder

$.writeln( fol1.fsName.constructor.name ); // Returns String

var fol2 = Folder( fol1.fsName );
var filesOfFol2 = fol2.getFiles();

$.writeln( filesOfFol2.constructor.name ); // Returns Array

$.writeln( filesOfFol2.join("\r") );

}() )


Beispielergebnis:

Code
13.1.2 
Folder
String
Array
~/Desktop/startup%20scripts/AddRotateSpreadView-to-Pages-ContextMenu.jsx
~/Desktop/startup%20scripts/ForceDirectory.txt
~/Desktop/startup%20scripts/NoBreakInCharPanelPopup_CS5.jsx
~/Desktop/startup%20scripts/STARTUP-BeforePlacing-Set-CharacterStyle-to-NONE.jsx
~/Desktop/startup%20scripts/STARTUP-Show-ColorSettings-BEFORE-NewDoc.jsx
~/Desktop/startup%20scripts/STARTUP-ShowFolder-Of-ExportedFile.jsx
~/Desktop/startup%20scripts/STARTUP-VersionenSichern.jsx



als Antwort auf: [#574707]

Folder-Objekt mit Pfad als Argument

WernerPerplies
Beiträge gesamt: 2762

1. Apr 2020, 11:57
Beitrag # 11 von 62
Beitrag ID: #574710
Bewertung:
(7423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

Antwort auf: Bitte teste einmal folgenden Code mit Windows-PhotoShop:

Ich hatte es bereits gesagt, ich habe und benutze kein PhotoShop.

Mache bitte das, was ich Dir vorgeschalgen habe, sonst kann ich Dir nicht helfen.

Hast Du Uwes oder mein Skriptvorschlag 1:1 in Photoshop getestet?

Wird ein Fehler geworfen?

Wenn ja, welcher?

Ich glaube ja, dass wir noch nicht alle benötigten Informationen von Dir bekommen haben.


als Antwort auf: [#574709]

Folder-Objekt mit Pfad als Argument

Martin Fischer
  
Beiträge gesamt: 12783

1. Apr 2020, 11:57
Beitrag # 12 von 62
Beitrag ID: #574711
Bewertung:
(7424 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

Deinen Code habe ich unter Photoshop CC2020 getestet.

Das Ergebnis entspricht den Erwartungen.




als Antwort auf: [#574707]
Anhang:
_fileArr.length.jpg (18.7 KB)

Folder-Objekt mit Pfad als Argument

J.Puff
Beiträge gesamt: 238

1. Apr 2020, 12:05
Beitrag # 13 von 62
Beitrag ID: #574712
Bewertung:
(7416 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
danke für die Tests!

Bei mir kommt nur folgende Ausgabe:
20.0.9
Folder
String
Array

Aber:
Möglicherweise liegt es an der Parallels-Umgebung. Teste ich mit Ordnern auf der generischen Windows-Platte der VM klappt es, nehme ich Ordner aus der MacOSX-Umgebung klappt es nicht.
U.U. tritt das Problem dann auch mit Server-Volumes auf?


als Antwort auf: [#574709]

Folder-Objekt mit Pfad als Argument

WernerPerplies
Beiträge gesamt: 2762

1. Apr 2020, 12:26
Beitrag # 14 von 62
Beitrag ID: #574713
Bewertung:
(7409 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Und was ist mit
Code
$.writeln( fol1 ) 
$.writeln( fol1.fullName)
$.writeln( fol1.fsName);



als Antwort auf: [#574709]

Folder-Objekt mit Pfad als Argument

J.Puff
Beiträge gesamt: 238

1. Apr 2020, 12:39
Beitrag # 15 von 62
Beitrag ID: #574715
Bewertung:
(7403 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Bitteschön:




als Antwort auf: [#574713]
Anhang:
Bildschirmfoto.png (28.8 KB)
X