[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Dateien in Ordner kopieren

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

Dateien in Ordner kopieren

mb_new
Beiträge gesamt: 123

27. Jan 2020, 12:55
Beitrag # 1 von 13
Bewertung:
(6005 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe Skripter!

Ich versuche mit einem Skript den Inhalt eines Ordners auszulesen (das klappt), die Dateien möchte ich dann in einen anderen Ordner kopieren (das klappt NICHT) und anschließend die Originale löschen (das klappt wieder)

Was mach ich da falsch? Mir gelingt es einfach nicht, dass der copy befehl angewandt wird. Remove zB funktioniert.

Könnt ihr mir weiterhelfen?

Danke
Martin

Code
var myFolder = Folder.selectDialog(); 
var myFiles = myFolder.getFiles();

var newFolder = Folder.selectDialog();

for (var i = 0; i < myFiles.length; i++){

File (myFiles[i]).copy(newFolder);
File (myFiles[i]).remove();

}

X

Dateien in Ordner kopieren

Uwe Laubender
Beiträge gesamt: 5316

27. Jan 2020, 14:38
Beitrag # 2 von 13
Beitrag ID: #573737
Bewertung:
(5980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
funktioniert's, wenn Du die Schleife rückwärts laufen lässt?

Code
for( var i = myFiles.length-1 ; i >= 0 ; i-- ) 



als Antwort auf: [#573730]

Dateien in Ordner kopieren

Martin Fischer
  
Beiträge gesamt: 12779

27. Jan 2020, 14:41
Beitrag # 3 von 13
Beitrag ID: #573738
Bewertung:
(5977 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vermutlich muss zusätzlich zu dem. was Uwe geschrieben hat, statt "newFolder" der komplette Pfad als File-Objekt zur neuen Datei angegeben werden.

Also File(newFolder + '/' + [Dateiname])




als Antwort auf: [#573730]
(Dieser Beitrag wurde von Martin Fischer am 27. Jan 2020, 14:45 geändert)

Anhang:
copy.png (50.7 KB)

Dateien in Ordner kopieren

Uwe Laubender
Beiträge gesamt: 5316

27. Jan 2020, 15:10
Beitrag # 4 von 13
Beitrag ID: #573740
Bewertung:
(5967 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
ja, das auch noch.
In Methode File.copy() wird als Argument entweder ein String oder ein File-Objekt erwartet.

Das sollte funktionieren:

Code
var myFolder = Folder.selectDialog();  
var myFiles = myFolder.getFiles();

var newFolder = Folder.selectDialog();

for ( var i = myFiles.length-1; i >=0; i-- )
{

var originalFile = myFiles[i];
var copyFile = File( newFolder +"/"+ originalFile.name );
if( copyFile.exists )
{
alert( copyFile +"\r"+"wird NICHT überschrieben. ");
continue
}

originalFile.copy( copyFile );

// TEST, OB DIE KOPIE AUSGEFÜHRT WURDE:
if( copyFile.exists )
{
originalFile.remove();
};

};



als Antwort auf: [#573738]

Dateien in Ordner kopieren

WernerPerplies
Beiträge gesamt: 2760

27. Jan 2020, 15:36
Beitrag # 5 von 13
Beitrag ID: #573742
Bewertung:
(5954 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

vielleicht hilft Dir dies Skript:

Kopieren von ganzen Ordnern


als Antwort auf: [#573730]

Dateien in Ordner kopieren

mb_new
Beiträge gesamt: 123

28. Jan 2020, 13:15
Beitrag # 6 von 13
Beitrag ID: #573750
Bewertung:
(5883 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen!

Danke für eure Hilfen. Habe das Skript von Uwe nun angepasst und es funktioniert einwandfrei.

Eine kleine Verständnisfrage noch:

Wenn ich einen Datei löschen möchte, muss da immer das"File" vorab oder danach dabei stehen?
Ich meine so:
Code
var delFile = File(myFolderName + "/" + myDocName); 
delFile.remove();



oder so:
Code
var delFile = myFolderName + "/" + myDocName; 
File(delFile).remove();


Ist das egal, auf welchem Weg man das skriptet?

Danke nochmals, schöne Grüße
Martin


als Antwort auf: [#573742]

Dateien in Ordner kopieren

WernerPerplies
Beiträge gesamt: 2760

28. Jan 2020, 13:32
Beitrag # 7 von 13
Beitrag ID: #573752
Bewertung:
(5872 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Martin,

Zitat Ist das egal, auf welchem Weg man das skriptet?


Nein! :-)

Code
delFile.remove(); 

benutzt die Methode eines existierenden Fileobjektes.
Zitat File(delFile).remove();

erzeugt ein temporäres Fileobjekt, dass nach Ausführung der Methode direkt wieder verworfen wird.

In der ersten Version steht Dir das Fileobjekt auch nach Ausführung des Removes mit seinen Eigenschften zur Verfügung.


als Antwort auf: [#573750]

Dateien in Ordner kopieren

Uwe Laubender
Beiträge gesamt: 5316

28. Jan 2020, 13:36
Beitrag # 8 von 13
Beitrag ID: #573753
Bewertung:
(5870 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
vorneweg:

getFiles() gibt Dateien und Unterverzeichnisse gleichermaßen zurück.

Du solltest deshalb in der Methode getFiles() eine Filterfunktion laufen lassen, die Verzeichnisse innerhalb des Source-Verzeichnisses rausnimmt. Auch Dateien, die mit einem Punkt beginnen, wenn Du auf Mac OS X unterwegs bist. Und auch Dateien, die in der Eigenschaft hidden den Wert true haben.



In etwa so:

Code
var testForInvisibleOnMac = RegExp( "^\\." ); 

myFileList = theFolder.getFiles
(
function(file)
{
if
(
file instanceof File
&&
!file.name.match( testForInvisibleOnMac )
&&
!file.hidden
)

return true
}
);


Nun zu Deiner anderen Frage:
Wenn Du erwartest, dass in der Variablen delFile wirklich ein Datei-Objekt gespeichert wird, dann benutze den Konstruktor File().

Oder Du benennst die Variable um in beispielsweise DateiPfadString oder so und beim Aufruf von remove() musst Du mit File(DateiPfadString).remove() arbeiten, damit aus dem DateiPfadString eine Datei-Objekt wird, das mit remove() etwas anfangen kann.


als Antwort auf: [#573750]
(Dieser Beitrag wurde von Uwe Laubender am 28. Jan 2020, 13:38 geändert)

Dateien in Ordner kopieren

mb_new
Beiträge gesamt: 123

29. Jan 2020, 10:53
Beitrag # 9 von 13
Beitrag ID: #573787
Bewertung:
(5805 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke an alle für die Erklärungen und Hilfestellungen.

Eine kurze Frage hab ich noch zum "copy"-Befehl.

Ich habe jetzt bemerkt, dass zB bei Schriften, das Icon geändert wird und auch das bevorzugte Programm, mit dem die Datei geöffnet werden soll. In meinem Fall auf einmal statt der Schriftsammlung nun Illustrator.
Bei psd, ai, png, jpg Dateien ist das bisher gleich geblieben.

Gibt es dafür eine Erklärung bzw. eine Möglichkeit das unverändert zu lassen?

Mein Laiengedanke sagt mit als eine Lösung, die Datei nicht zu kopieren sondern in einen anderen Ordner zu "verschieben".

Vielleicht hat hier noch wer einen Input, unbedingt notwendig ist es mir nicht, nur der "Form" halber.

Schöne Grüße
Martin


als Antwort auf: [#573753]

Dateien in Ordner kopieren

Thomas Richard
Beiträge gesamt: 19327

29. Jan 2020, 11:22
Beitrag # 10 von 13
Beitrag ID: #573788
Bewertung:
(5799 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Da fehlt wahrscheinlich beim copy der Touch, der dem System (im Falle eines aktuellen OS X der Spotlight Datenbank), bescheid stößt, dass die Ressourcen mit zu bewegen sind. Klassisches Problem, das einem ein Heliosserver erspart ;-)


als Antwort auf: [#573787]

Dateien in Ordner kopieren

WernerPerplies
Beiträge gesamt: 2760

30. Jan 2020, 09:25
Beitrag # 11 von 13
Beitrag ID: #573818
Bewertung:
(5746 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Uwe,

Zitat originalFile.copy( copyFile );

// TEST, OB DIE KOPIE AUSGEFÜHRT WURDE:
if( copyFile.exists )
{
originalFile.remove();
};


An dieser Stelle würde mich interessieren, warum die Kopie nicht ausgeführt wurde, deshalb vielleicht besser so abfragen:

Code
            if (!(originalFile.copy(copyFile))){ 
alert(/*String*/originalFile.error) ;
}
else{
if (!(originalFile.remove())
alert(/*String*/originalFile.error)
}



als Antwort auf: [#573740]

Dateien in Ordner kopieren

Uwe Laubender
Beiträge gesamt: 5316

30. Jan 2020, 11:51
Beitrag # 12 von 13
Beitrag ID: #573825
Bewertung:
(5730 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Martin …Eine kurze Frage hab ich noch zum "copy"-Befehl.

Ich habe jetzt bemerkt, dass zB bei Schriften, das Icon geändert wird und auch das bevorzugte Programm, mit dem die Datei geöffnet werden soll. In meinem Fall auf einmal statt der Schriftsammlung nun Illustrator.
Bei psd, ai, png, jpg Dateien ist das bisher gleich geblieben.

Gibt es dafür eine Erklärung bzw. eine Möglichkeit das unverändert zu lassen?


Hallo Martin,
auf welchem Betriebssystem bist Du unterwegs?

Du hast "Schriftsammlung" erwähnt, also Mac OS X.
Aber welches genau?

Habe gerade keinen Mac zur Hand, um das ausgiebiger zu testen.
Was sind das für Schriften? OpenType-Fonts?


als Antwort auf: [#573787]

Dateien in Ordner kopieren

mb_new
Beiträge gesamt: 123

30. Jan 2020, 15:14
Beitrag # 13 von 13
Beitrag ID: #573832
Bewertung:
(5704 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe!

Ich habe hier OSX 10.14, InDesign CC 2018.
Die Schriften bekommen ein "Text"-Symbol in der Dateiinformation und als vorgeschlagenes Programm Adobe Illustrator.

Ich habe es mit zig anderen dateien probiert (docx, xlsx, ai, png, jpg, psd, pdf), die bleiben alle unverändert. Bei den Schriften hatte ich bis jetzt otf und ttf probiert, die werden beide verändert.

Zuhause hab ich noch einen Rechner mit 10.11 und InDesign CC 2018. Dort tritt das gleiche auf, nur dass die Schriften ein anderes Symbol bekommen und das vorgeschlagene Programm auch ein anderes ist (weiß jetzt von hier gerade nicht welches).

Schöne Grüße
Martin


als Antwort auf: [#573825]
X