Photoshop-Batch-Job: In Ordner exportieren (Dateinamen)

Ich versuche, eine Batchdatei für eine benutzerdefinierte Aktion auszuführen. Die Aktion macht eine Sache: Datei -> Exportieren -> Pfade zu Illustrator.

Wenn ich diese Aktion jedoch als Batch für mehrere Dateien ausführe, speichert sie jede Datei mit demselben Namen. Wenn ich File1.psdes also öffne und speichere working/File1.ai, dann führe den Stapel auf File2.psd, File3.psd, aus und File4.psdwas ich erhalte, ist working/File1.aieine aus exportierte Illustrator-Datei File4.psd. Dateien 2 und 3 wurden überschrieben (ebenso File1.aioffensichtlich).

Hier ist mein Batch-Dialog:Screenshot des Batch-Dialogfelds

Wenn ich das Ziel z. B. auf Ordner ändere, werden alle Dateien erneut als PSD gespeichert, zusätzlich zum Überschreiben der AI-Dateien. Wie kann ich diesen Export für eine beliebige Anzahl von PSD-Dateien ausführen und die gleiche Anzahl von AI-Dateien am anderen Ende erhalten?

BEARBEITEN: Durch erneutes Aufzeichnen der Aktion und Verweigern des Dialogfelds wird das Dialogfeld beim ersten Durchlauf des Stapels angezeigt, und nachfolgende Dateien werden unter dem Namen gespeichert, den ich in diesem Dialogfeld angegeben habe (mit anderen Worten, ein Dialogfeld für alle Dateien).

BEARBEITEN 2: Nach der folgenden Antwort habe ich versucht, im Ordner zu speichern und Aktionsspeicherbefehle zu überschreiben (Screenshot):Zweiter Versuch Stapelverarbeitungsdialog

Dies führte zu den gleichen Ergebnissen. :(

Hier ist die Aktion, die ich ausführe:Screenshot der Aktionsdefinition

ETA 3: Basierend auf den Kommentaren könnte mein Problem darin bestehen, dass der Befehl „Exportieren -> Pfade zu Illustrator“ das Kontrollkästchen „Aktion außer Kraft setzen unter“ nicht berücksichtigt, was bedeutet, dass ich nur mit diesem Mangel von Photoshop feststecke.

Wie vertraut sind Sie mit Javascript etc.?
Es ist nicht meine Muttersprache, aber ich komme zurecht. Ein Teil des Endziels dieser Skripte besteht darin, Pfadzeichenfolgen zu erhalten, die ich in Raphael.js verwenden kann.
OK, siehe meine Antwort.
Downvotes: Möchtest du konstruktive Kritik äußern?

Antworten (2)

Wählen Sie einen Zielordner (letzte nicht ausgegraute Option) und wählen Sie dann „Aktion außer Kraft setzen unter“ darunter. Sie können sehen, dass darunter Starting serial#“ steht, was darauf hinweist, dass jede Datei mit einer nächsten Nummer benannt wird.

Hmm. Ich habe dies versucht, und ich bekomme das gleiche Verhalten wie zuvor. Ich werde einen Screenshot der Aktion hinzufügen, die ich ausführe, vielleicht hilft das ...
Seltsamerweise funktioniert es bei mir. Es ist wahrscheinlich ein kleines Detail, das Sie anders machen.
Ja, dieses kleine Detail ist es, was ich herausfinden muss. :( Wenn ich nur die Aktion direkt bearbeiten könnte!
Können Sie einen Screenshot Ihres Stapeldialogs posten, damit ich nach Unterschieden suchen kann?
Warte, ich bin etwas verwirrt, jetzt, wo ich das wieder lese. Ich habe Batch schon einmal verwendet, aber nie zum Exportieren nach Illustrator, und wenn ich den Batch-Bildschirm öffne, wird mir diese Option nicht angezeigt. Wie bist du dorthin gekommen? (ps Ich muss meine Antwort möglicherweise ändern / löschen, wenn ich hier völlig vom Weg abkomme)
Ich habe auch kein 'Sylvius'-Set.
Ich denke, "Exportieren" berücksichtigt das "Speichern unter außer Kraft setzen" nicht, da es sich nicht um einen "Speichern unter"-Befehl handelt. Ich weiß aus eigener Erfahrung, dass eine "Für Web speichern"-Aktion davon nicht betroffen ist
Aber wie sind Sie dorthin gekommen, mit der Option, in Illustrator zu speichern? File > Automate > Batch..Ich nehme an?
@poepje: Lassen Sie sich nicht durch das Dropdown-Menü mit "In Illustrator exportieren" verwirren. Das ist der Name einer benutzerdefinierten Aktion.
pjmorse, ich habe dazu einen Chatroom erstellt, möchtest du mitmachen? chat.stackexchange.com/rooms/info/3776/…
Tut mir leid, ich war unterwegs, als du den Chatroom-Kommentar gepostet hast. Um Ihre Kommentare zu beantworten: Das Set "Sylvius" ist nur ein Set im Photoshop-Aktionsfenster (erstellen durch Klicken auf das Ordnersymbol). "In Illustrator exportieren" ist nur der Name der Aktion, die ich erstellt habe - ich hätte sie "meine benutzerdefinierte Aktion" oder "Elliot" nennen können. Mein dritter Screenshot zeigt die Aktion, die sehr einfach ist.
@horatio, es hört sich so an, als wäre dies mein Problem (dass "Exportieren" die "Speichern-unter-Überschreibung" nicht berücksichtigt). Was ich brauche, ist herauszufinden, wie ich es umgehen kann.
Nur zur Verdeutlichung, in CS6 respektieren einige Exportfunktionen die "Speichern unter Überschreibung", wenn sie mit "Seriennummer" verwendet werden. Wenn die von Ihnen verwendete Funktion dies nicht tut, ist die Antwort von @horatio unten eine gute Alternative.

Eine Möglichkeit, damit zu arbeiten, ist die Verwendung von Skripten (Applescript, VBScript, Javascript). Phtoshop stellt den Exportbefehl ( exportDocument (exportIn [, exportAs][, options])) bereit (siehe zum Beispiel das Dokument von Adobe photoshop_cs4_javascript_ref.pdf) und Sie müssen also nur ein Dokument öffnen und dem Befehl dann einen Zieldateinamen und Optionen zuführen.

Eine schnelle Google-Suche brachte mich zu diesem Skript von Photoshop for Geeks ( http://www.tranberry.com/panels/ ) NOT MY CODE:

// openFolderTemplate.jsx
// Copyright 2007
// Written by Jeffrey Tranberry
// Photoshop for Geeks Version 1.0

/* 
Description:
This script is a template script that will
open and process a folder of images
*/

// enable double clicking from the 
// Macintosh Finder or the Windows Explorer
#target photoshop

// Make Photoshop the frontmost application
// in case we double clicked the file
app.bringToFront();


///////////////////////////
//       SET-UP          //
///////////////////////////


// A list of file extensions to skip, keep them lower case

    gFilesToSkip = Array( "db", "xmp", "thm", "txt", "doc", "md0", "tb0", "adobebridgedb", "adobebridgedbt", "bc", "bct" );


// Pops open a dialog for the user to
// choose the folder of documents to process

    var inputFolder = Folder.selectDialog("Select a folder of documents to process");


// Pops open a dialog for the user to
// set the output folder

    var outputFolder = Folder.selectDialog("Select a folder for the output files");



///////////////////////
//         MAIN          //
//////////////////////



// Open Folder of Images

    OpenFolder();


// show the path to an output folder

    alert(outputFolder);



///////////////////////////
//       FUNCTIONS       //
///////////////////////////



// Given the a Folder of files, open them

function OpenFolder() {
        var filesOpened = 0;
        var fileList = inputFolder.getFiles();
        for ( var i = 0; i < fileList.length; i++ ) {
                   // Make sure all the files in the folder are compatible with PS
                if ( fileList[i] instanceof File && ! fileList[i].hidden && ! IsFileOneOfThese( fileList[i], gFilesToSkip )) {
                        open( fileList[i] );
                        filesOpened++;


                    /////////////////////////////////////
                    // Put all your processing functions... //
                    /////////////////////////////////////

                        // Alert and show the document name
                        alert(app.activeDocument.name);

                        // Cloes the file without saving
                        app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

                    ////////////////////////////////////////////
                    // ...in the area between these two comments. //
                    ////////////////////////////////////////////


                }

        }
        return filesOpened;
}


// given a file name and a list of extensions
// determine if this file is in the list of extensions

function IsFileOneOfThese( inFileName, inArrayOfFileExtensions ) {
    var lastDot = inFileName.toString().lastIndexOf( "." );
    if ( lastDot == -1 ) {
        return false;
    }
    var strLength = inFileName.toString().length;
    var extension = inFileName.toString().substr( lastDot + 1, strLength - lastDot );
    extension = extension.toLowerCase();
    for (var i = 0; i < inArrayOfFileExtensions.length; i++ ) {
        if ( extension == inArrayOfFileExtensions[i] ) {
            return true;
        }
    }
    return false;
}

Sie können einen Quell- und einen Zielordner auswählen, und das Skript listet die Dateien auf. Sie können dann Ihre eigene Funktion in einfügen do magic.

Funktioniert das auch für Illustrator? ^
Illustrator unterstützt Skripterstellung, aber ich vermute, dass das obige Skript ohne Änderungen in Illustrator nicht funktionieren würde. Adobe hostet Dokumentation zum Skriptmodell im Allgemeinen und zu einzelnen Produkten.
@ user20375 – Ich habe eine Bearbeitung der Antwort für die Photoshop-Skriptreferenz eingereicht, aber hier ist der entsprechende Link für Illustrator ( adobe.com/devnet/illustrator/scripting.html ). Da Illustrator Dateien nicht auf die gleiche Weise wie PS öffnet, würden sich Zeile 16 (#target photoshop) und Zeile 77 (open( fileList[i] );) ändern und natürlich Ihre spezifische Aktion/Verarbeitung.