Marker List: Batch Export Marker Regions MISSING

Hi guys,
I am running Audition 3.0.1 on Windows 7 x64 and just went to use the 'Batch Export Marker Regions' function in the 'Markers' panel to save any my marked regions to seperate files.
However, the icon for this seems to be missing completely.
Any ideas what is wrong and how I might get the icon back?
Here's a grab of the panel. As you can see, the icon that should be bottom right just isn't there!
Many thanks in advance,
James.

Hi guys,
I have solved the problem! Although I now realise that I have totally missed how this all works.. Doh.
Basically I was expecting to see the batch export option icon in the 'Marker List' when in 'Multitrack' mode. I now realise that it is only available in 'Edit' mode.
Sorry for wasting your time although this might help out others who make the same mistake as me. I assumed I would be able to do this from Multitrack mode as I find it easy to edit a large VO take in multitrack and then apply effects to the whole track easily. It would be nice to be able to batch export from this view based on the current track settings, but it's not too bad.
Also, for anyone who is wondering you can take a multitrack session down into edit mode with ALL markers in place by going to File->Export->Audio Mixdown. From here it's then a simple case to export all markers out based on your preferences.
So pleased to have solved this one.
Thanks for all responses.
James.

Similar Messages

  • Preserving Marker master comment in batch export

    Hello,
    I'm doing a quasi-transcription of clips using markers and the comments. I'd like to make subclips of all the markers (with Master Comments) to eventually export to Excel and have a nice rough transcription of interviews etc. However, when I make the subclips from the markers, the Master Comment 1 (which has good, supplementary info and/or dialog) is gone and I lose that info. Is there a way to preserve that master comment when making a sublclip from a marker?
    Thanks!

    Hi guys,
    I have solved the problem! Although I now realise that I have totally missed how this all works.. Doh.
    Basically I was expecting to see the batch export option icon in the 'Marker List' when in 'Multitrack' mode. I now realise that it is only available in 'Edit' mode.
    Sorry for wasting your time although this might help out others who make the same mistake as me. I assumed I would be able to do this from Multitrack mode as I find it easy to edit a large VO take in multitrack and then apply effects to the whole track easily. It would be nice to be able to batch export from this view based on the current track settings, but it's not too bad.
    Also, for anyone who is wondering you can take a multitrack session down into edit mode with ALL markers in place by going to File->Export->Audio Mixdown. From here it's then a simple case to export all markers out based on your preferences.
    So pleased to have solved this one.
    Thanks for all responses.
    James.

  • Batch-Processing Marker Regions Problem?

    I got a weird one here.
    Batch-Saving Marker Regions using the marker name as the file name (which I use just about every day!) is telling me that one particular group of markers already exist at the destination folder, and prompts me to over-write. First off, there are NO files by that name in the destination folder, and second, when I tried to overwrite, it started a save operation that said it was going to take 15 minutes! And this is for a 15-second mono mp3.
    I triple-checked that the proper destination folder is selected in the batch processing box.
    Any idea what is going on?
    Thanks!
    Ken
    AA3.0, XP Pro on a Core Duo processor with 1.2 TB of HD space.

    I figured it out. In case anyone is interested, Windows reserves certain file names because they are system files, like "COM1, COM2, etc." My client specified the file names for the project, which is why I tried to use "COMx." I guess even he didn't know.
    Anyway, I just changed the file name and it worked as per usual.
    Cheers!
    Ken

  • Files marked as missing in iTunes

    My iTunes music storage folder is on an external drive. I recently started iTunes without the drive attached, and when i tried playing songs it obviously couldn't find the songs. Now all of a sudden there a hundreds of songs that are marked as missing, or whatever that mark means to the right of each song. After connecting the drive back I am able to listen to those songs, but only if i double click on the song. iTunes won't play them automatically if these marked songs are next in the sequence. My question is how can i Unmark all these songs so that iTunes once again starts playing them normally. I hope my question is clear enough.
    thanks.

    Try using my update script: http://ottodestruct.com/itunes/update.txt
    Rename it to update.js, then run it like any other program. It'll force iTunes to reread all your files. Might take a while, and has no progress meter, so be patient.

  • How do I apply color to my marker regions

    How do I get my marker region bar to have a different background colors?

    cris is bliss wrote:
    Right click on what,
    I think the previous poster has assigned in Logic's preferences>General>Editing> Right clicking the mouse to open Tools and Shortcut menu.Then when you right click on a region it gives you the option to open the Color Palette ...
    else you press Option(Alt)+ C,then select the Marker region you'd like to change its color and click on on the color .
    You could also drag and drop any region in the Markers bar
    A

  • Batch Export Trick for Logic using Markers and XLD

    I've always wanted apple to implement batch export of multiple audio files from logic using markers as delimiters. So you can mix a concert and export it in one go without having to hang around and re-start bouncing for each track.
    Now you can do this (albeit in a two step process) using Logic 9.1 and the free and wonderful XLD!
    Just place markers in your project and bounce as AIFF (this is the only format that seems to work with this, so you are out of luck if your bounce file is going to be larger than 2GB). I suggest placing a marker at the very beginning of the project too so you first file is not called "Timestamp_0" or some such thing. You can even name the markers with the name you want each file to have, though keep in mind files will sort alphabetically of course once they are split if you have a specific order - so maybe preface them with 01, 02, 03, etc etc.
    OK - now go get XLD (the GUI version):
    http://tmkk.hp.infoseek.co.jp/xld/index_e.html
    download, install and run it. No window will appear at first. Open the preferences and choose your desired output format and options, directory, etc
    drop the AIFF file onto XLD (I've put XLD into my Finder window toolbar for easy access). When it asks you to open the embedded cue sheet, say "OK" and your markers should appear as a list of CD tracks that you can play double click to play with a player interface and preview.
    Then press "Decode" and voila! All your markers as separate audio files with the marker name, in whatever format (including the multiple formats option) you set XLD for.
    You can even edit metadata at this stage (but first consider whether your output format supports it)
    Some of the formats XLD can produce are
    AIFF
    WAV
    Apple Lossless (saves some space!)
    FLAC
    AAC
    MP3
    OGG
    etc etc
    Personally I think this is an absolutely fantastic trick and am happy to have discovered it. Hope it helps you too.

    Also, if you have gaps in the original session, put a marker at the end of the previous section and call it something like "end". Then you can uncheck all the "end" 'tracks' in the cue sheet and they wont be exported in XLD.
    Oh and it also seems XLD will preface your marker delimited files with their 'CD track' number. Useful to keep them in order, but they will probably want to be changed if you have gaps you took out with extra "end" markers.

  • Is there a way to select multiple sequences and batch export them using the same settings in CS6?

    I am a current Final Cut Pro7 user and looking to switch over to Premiere Pro CS6.  We edit approx. 100 short (15 sec.) videos daily, and then select them all at the end of the day and batch export them over night using the same export recipe for all. I have having trouble finding an easy way to do this in Premiere pro CS6, as command +E is grayed out if i select more than one sequence at a time. 
    so far, it appears that i have to select each video individually and manually set encoding recipe and export location for each....  Not only would this be terribly time consuming, but it leaves a lot of room for error and missed videos.  I thought i would be able to send all of the sequences to Adobe Media Encoder,  but i dont see that option either.
    Any suggestions/
    thanks!

    Open Media Encoder and add your Sequences:
    File > Add Premiere Pro Sequence
    Navigate to your Premiere Project and select it in the list.
    You can then select multiple Sequences from the Project (Ctrl+Click)
    and load them all at once into Media Encoder and apply
    the same encoding preset to all Sequences at the same time.

  • Problem in Batch Export Report

    Hi all,
    I have developed a report in PP module for Batch exports.
    Here iam providing the input as plant, material no & batch and the output will  be Orderwise material no, batch, mat desc, density and Quantity.
    While executing the report the output is coming exactly for the first order while for the second order the values are not fetching correctly.
    Pls suggest me.
    *& Report  ZPP_EXPORTBATCH
    REPORT  ZPP_EXPORTBATCH.
    TABLES: MSEG,MKPF,AUFK,AFPO. "
    TYPE-POOLS SLIS.
    DATA: IT_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
          LIST_LAYOUT TYPE SLIS_LAYOUT_ALV,                     "#EC *
          GS_KEYINFO TYPE SLIS_KEYINFO_ALV,                     "#EC *
          W_PROG TYPE SY-REPID,
          P_RS_LINEINFO TYPE SLIS_LINEINFO.
    Internal Tables**********************************
    TYPES: TY_SCLASS TYPE STANDARD TABLE OF SCLASS.
    TYPES: TY_OBJECTDATA TYPE STANDARD TABLE OF CLOBJDAT.
    TYPES: BEGIN OF T_MSEG,
           BWART LIKE MSEG-BWART,
           MATNR LIKE MSEG-MATNR,
           MAKTX LIKE MAKT-MAKTX,
           CHARG LIKE MSEG-CHARG,
           MENGE LIKE MSEG-MENGE,
           ERFME LIKE MSEG-ERFME,
           AUFNR LIKE MSEG-AUFNR,
           AUSP1 LIKE CLOBJDAT-AUSP1,
           ERROR(30),
           END OF T_MSEG.
    TYPES: INT_MSEG_FINAL TYPE STANDARD TABLE OF T_MSEG .
    TYPES: BEGIN OF TY_MENGE1,
             MATNR TYPE MSEG-MATNR,
             CHARG TYPE MSEG-CHARG,
             MENGE TYPE MSEG-MENGE,
             ERFME TYPE MSEG-ERFME,
             MBLNR TYPE MSEG-MBLNR,
             ZEILE TYPE MSEG-ZEILE,
           END OF TY_MENGE1.
    TYPES: TY_MENGE TYPE STANDARD TABLE OF TY_MENGE1.
    DATA : LENGTH     TYPE     I,
    DIFFERENCE     TYPE     I,
    IT_CLASS     TYPE     TY_SCLASS,
    IT_OBJECTDATA     TYPE     TY_OBJECTDATA,
    WA_CLASS     TYPE     SCLASS,
    WA_OBJECTDATA     TYPE     CLOBJDAT,
    L_MATNR     TYPE     MATNR,
    INT_MSEG_FINAL     TYPE     INT_MSEG_FINAL,
    WA_MSEG_FINAL     TYPE     T_MSEG,
    WA_MSEG     TYPE     MSEG,
    WA_WEMNG     TYPE     AFPO-WEMNG,
    WA_PSMNG     TYPE     AFPO-PSMNG,
    WA_AMEIN     TYPE     AFPO-AMEIN,
    BAL_QTY     TYPE     AFPO-WEMNG,
    INT_MSEG_TEMP1     TYPE     INT_MSEG_FINAL,
    WA_CALCULATED1     TYPE     AFPO-WEMNG,
    IT_MENGE     TYPE     TY_MENGE,
    WA_MENGE1     TYPE     TY_MENGE1,
    WA_MAKTX     TYPE     MAKT-MAKTX,
    WA_HSDAT     TYPE     MCH1-HSDAT,
    WA_MAKTX_MAIN     TYPE     MAKT-MAKTX,
    MAIN_DEN     TYPE     STRING,
    DENSITY     TYPE     STRING,
    MDENSITY     TYPE     STRING,
    IDENSITY     TYPE     STRING.
    data : tqty like mseg-menge.
    data:INT_MSEG_TEMP2   LIKE MSEG OCCURS 0 WITH HEADER LINE.
    data:INT_MSEG_TEMP3   LIKE MSEG OCCURS 0 WITH HEADER LINE.
    **************Initialization********************************************
    INITIALIZATION.
    **************Input Parameters List*************************************
      SELECTION-SCREEN SKIP 3.
      SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-T01 . "#EC
          SELECT-OPTIONS : S_WERKS FOR MSEG-WERKS OBLIGATORY, "PLANT
                           S_MATNR FOR MSEG-MATNR OBLIGATORY, "MATERIAL NUMBER
                           S_CHARG FOR MSEG-CHARG,            "BATCH
                           S_BUDAT FOR MKPF-BUDAT.            "POSTING DATE
      SELECTION-SCREEN END OF BLOCK BLOCK1.
    START-OF-SELECTION.
      PERFORM READ_DATA.
      PERFORM SUB_PREPARE_FIELDCATALOG.
      PERFORM FILL_EVENTS_TABLE.
    END-OF-SELECTION.
      PERFORM DISPLAY_DATA_USING_GRID.
    *&      Form  READ_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM READ_DATA .
    DATA :INT_AFPO LIKE AFPO OCCURS 0 WITH HEADER LINE.
    DATA :INT_MSEG        LIKE MSEG OCCURS 0 WITH HEADER LINE,
    INT_MSEG_TEMP   LIKE MSEG OCCURS 0 WITH HEADER LINE.
    SELECT SINGLE MAKTX
      INTO WA_MAKTX_MAIN
      FROM MAKT
      WHERE MATNR IN S_MATNR.
    DATA : WA_MENGE LIKE MSEG-MENGE.
    SELECT  SINGLE *
    FROM  AFPO
    INTO  INT_AFPO
    WHERE MATNR IN S_MATNR
    AND   CHARG IN S_CHARG
    AND   DWERK IN S_WERKS.
    MOVE INT_AFPO-WEMNG TO WA_WEMNG.
    MOVE INT_AFPO-PSMNG TO WA_PSMNG.
    MOVE INT_AFPO-AMEIN TO WA_AMEIN.
    SELECT *
    INTO TABLE INT_MSEG
    FROM  MSEG
    WHERE AUFNR = INT_AFPO-AUFNR
    AND  BWART IN ('261' , '262' )
    AND  WERKS IN S_WERKS.
    REFRESH INT_AFPO.
    int_mseg_temp3[] = int_mseg[].
    LOOP AT INT_MSEG.
      clear tqty.
        loop at int_mseg_temp3 WHERE MATNR = INT_MSEG-MATNR
                                 and charg = int_mseg-charg
                                 AND AUFNR = INT_MSEG-AUFNR
              if int_mseg_temp3-bwart = '261' .
                   tqty = tqty + int_mseg_temp3-menge.
              elseif int_mseg_temp3-bwart = '262'.
                   tqty = tqty - int_mseg_temp3-menge.
              endif.
         endloop.
        int_mseg-menge = tqty.
      SELECT  SINGLE *
      FROM  AFPO
      INTO  INT_AFPO
      WHERE MATNR = INT_MSEG-MATNR
      AND   CHARG = INT_MSEG-CHARG
      AND   DWERK IN S_WERKS.
    IF SY-SUBRC EQ 0 AND INT_AFPO-AUFNR <> ' '.
        SELECT * FROM MSEG
        INTO    TABLE INT_MSEG_TEMP
        WHERE  AUFNR = INT_AFPO-AUFNR
        AND    BWART IN ('261' , '262' )
        AND    WERKS IN S_WERKS.
        LOOP AT INT_MSEG_TEMP.
          WA_CALCULATED1 = ( INT_MSEG_TEMP-MENGE / INT_AFPO-WEMNG ) * INT_MSEG-MENGE.
          WA_MENGE1-MENGE = WA_CALCULATED1.
          WA_MENGE1-MATNR = INT_MSEG_TEMP-MATNR.
          WA_MENGE1-CHARG = INT_MSEG_TEMP-CHARG.
          WA_MENGE1-ERFME = INT_MSEG_TEMP-ERFME.
          WA_MENGE1-MBLNR = INT_MSEG_TEMP-MBLNR.
          WA_MENGE1-ZEILE = INT_MSEG_TEMP-ZEILE.
          APPEND WA_MENGE1 TO IT_MENGE.
          CLEAR: WA_CALCULATED1, WA_MENGE1.
        ENDLOOP.
        SORT IT_MENGE BY MBLNR ZEILE MATNR CHARG.
         ENDLOOP.
        CLEAR  INT_MSEG.
        MODIFY  TABLE INT_MSEG  FROM INT_MSEG_TEMP.
        LOOP AT INT_MSEG_TEMP.
          MOVE-CORRESPONDING INT_MSEG_TEMP TO INT_MSEG.
          READ TABLE IT_MENGE INTO WA_MENGE1
          WITH KEY MATNR = INT_MSEG_TEMP-MATNR
                   CHARG = INT_MSEG_TEMP-CHARG
                   MBLNR = INT_MSEG_TEMP-MBLNR
                   ZEILE = INT_MSEG_TEMP-ZEILE.
          INT_MSEG-MENGE = WA_MENGE1-MENGE.
          APPEND INT_MSEG.
          CLEAR  INT_MSEG.
    *Added for Changes given by anup ART:09MAR08
         CLEAR WA_MENGE1-MENGE.
    *End of for Changes given by anup ART:09MAR08
        ENDLOOP.
        REFRESH INT_MSEG_TEMP.
        CLEAR INT_AFPO.
      ELSE.
       MOVE:  INT_MSEG-MATNR TO   WA_MSEG_FINAL-MATNR,
        INT_MSEG-CHARG  TO WA_MSEG_FINAL-CHARG,
        INT_MSEG-MENGE  TO WA_MSEG_FINAL-MENGE,
        INT_MSEG-ERFME  TO WA_MSEG_FINAL-ERFME,
        INT_MSEG-BWART  TO WA_MSEG_FINAL-BWART .
        APPEND WA_MSEG_FINAL TO INT_MSEG_FINAL.
        CLEAR WA_MSEG_FINAL.
        CLEAR INT_AFPO.
      ENDIF.
    ENDLOOP.
    INT_MSEG_TEMP1[] = INT_MSEG_FINAL[].
    REFRESH INT_MSEG_FINAL.
    SORT INT_MSEG_TEMP1 BY MATNR CHARG.
    LOOP AT INT_MSEG_TEMP1 INTO WA_MSEG_FINAL.
      ON CHANGE OF WA_MSEG_FINAL-MATNR
      OR WA_MSEG_FINAL-CHARG.
        IF WA_MSEG_FINAL-BWART = '261'.
          WA_MENGE = WA_MENGE + WA_MSEG_FINAL-MENGE.
        ELSEIF WA_MSEG_FINAL-BWART = '262'.
          WA_MENGE = WA_MENGE - WA_MSEG_FINAL-MENGE.
        ENDIF.
        WA_MSEG_FINAL-MENGE = WA_MENGE.
        CLEAR WA_MENGE.
        APPEND WA_MSEG_FINAL TO INT_MSEG_FINAL.
        CLEAR WA_MSEG_FINAL.
      ENDON.
    ENDLOOP.
    LOOP AT INT_MSEG_FINAL INTO WA_MSEG_FINAL.
      SELECT SINGLE MAKTX
        INTO WA_MAKTX
        FROM MAKT
        WHERE MATNR = WA_MSEG_FINAL-MATNR.
      WA_MSEG_FINAL-MAKTX = WA_MAKTX.
      MODIFY INT_MSEG_FINAL FROM WA_MSEG_FINAL TRANSPORTING MAKTX.
      CLEAR WA_MAKTX.
    ****************CHGS BY MURALI.C FOR
    DATA: WA_OBJECT(50) TYPE C.
    LENGTH = STRLEN( WA_MSEG_FINAL-MATNR ).
    IF LENGTH LT 18.
    DIFFERENCE = 18 - LENGTH.
    DO DIFFERENCE TIMES.
    CONCATENATE WA_MSEG_FINAL-MATNR SPACE INTO L_MATNR.
    ENDDO.
    ENDIF.
    CONCATENATE L_MATNR WA_MSEG_FINAL-CHARG INTO WA_OBJECT RESPECTING
    BLANKS.
    CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
    EXPORTING
      CLASS                      = ' '
      CLASSTEXT                  = 'X'
    CLASSTYPE                  = '023'
      CLINT                      = 0
      FEATURES                   = 'X'
      LANGUAGE                   = SY-LANGU
    OBJECT                     = WA_OBJECT
    OBJECTTABLE                = 'MCH1'
      KEY_DATE                   = SY-DATUM
      INITIAL_CHARACT            = 'X'
      NO_VALUE_DESCRIPT          = NO_VALUE_DESCRIPT
      CHANGE_SERVICE_CLF         = 'X'
      INHERITED_CHAR             = ' '
      CHANGE_NUMBER              = ' '
    TABLES
    T_CLASS                    = IT_CLASS
    T_OBJECTDATA               = IT_OBJECTDATA
      I_SEL_CHARACTERISTIC       = I_SEL_CHARACTERISTIC
      T_NO_AUTH_CHARACT          = T_NO_AUTH_CHARACT
    EXCEPTIONS
    NO_CLASSIFICATION          = 1
    NO_CLASSTYPES              = 2
    INVALID_CLASS_TYPE         = 3
    OTHERS                     = 4
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    read TABLE IT_OBJECTDATA INTO wa_objectdata
    with KEY SMBEZ = 'Density'.
    if wa_objectdata-ausp1 <> '?'.
    perform density_calc using wa_objectdata-ausp1 changing idensity.
    WA_MSEG_FINAL-AUSP1 = idensity.
    else.
    WA_MSEG_FINAL-ERROR = 'classification value missing'.
    endif.
    MODIFY INT_MSEG_FINAL FROM WA_MSEG_FINAL TRANSPORTING AUSP1 ERROR.
    CLEAR :WA_MSEG_FINAL-MATNR,WA_MSEG_FINAL-CHARG,WA_MSEG_FINAL-AUSP1,WA_OBJECT,WA_OBJECTDATA-AUSP1.
    ENDLOOP.
    ENDFORM.                    " READ_DATA
    *&      Form  SUB_PREPARE_FIELDCATALOG
          text
    -->  p1        text
    <--  p2        text
    FORM SUB_PREPARE_FIELDCATALOG .
      X_FIELDCAT-FIELDNAME = 'MATNR'.
      X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
      X_FIELDCAT-SELTEXT_M = 'MATERIAL NUMBER'. "#EC NOTEXT
      X_FIELDCAT-JUST = 'C'.
      X_FIELDCAT-OUTPUTLEN = 10.
      X_FIELDCAT-KEY = 'X'.
      X_FIELDCAT-KEY_SEL = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      X_FIELDCAT-FIELDNAME = 'MAKTX'.
      X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
      X_FIELDCAT-SELTEXT_M = 'MATERIAL DESCRIPTION'. "#EC NOTEXT
      X_FIELDCAT-JUST = 'C'.
      X_FIELDCAT-OUTPUTLEN = 17.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      X_FIELDCAT-FIELDNAME = 'CHARG'.
      X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
      X_FIELDCAT-SELTEXT_M = 'BATCH'. "#EC NOTEXT
      X_FIELDCAT-JUST = 'C'.
      X_FIELDCAT-OUTPUTLEN = 10.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      X_FIELDCAT-FIELDNAME = 'AUSP1'.
      X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
      X_FIELDCAT-SELTEXT_M = 'DENSITY'. "#EC NOTEXT
      X_FIELDCAT-JUST = 'C'.
      X_FIELDCAT-OUTPUTLEN = 6.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      X_FIELDCAT-FIELDNAME = 'MENGE'.
      X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
      X_FIELDCAT-SELTEXT_M = 'QUANTITY'. "#EC NOTEXT
      X_FIELDCAT-JUST = 'C'.
      X_FIELDCAT-OUTPUTLEN = 9.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      X_FIELDCAT-FIELDNAME = 'ERFME'.
      X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
      X_FIELDCAT-SELTEXT_M = 'UOM'. "#EC NOTEXT
      X_FIELDCAT-JUST = 'C'.
      X_FIELDCAT-OUTPUTLEN = 9.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
    *X_FIELDCAT-FIELDNAME = 'EDATU1'.
    X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
    X_FIELDCAT-SELTEXT_M = 'CONFIRMED QUANTITY DATED'. "#EC NOTEXT
    X_FIELDCAT-JUST = 'C'.
    X_FIELDCAT-OUTPUTLEN = 9.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    X_FIELDCAT-FIELDNAME = 'ETENR1'.
    X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
    X_FIELDCAT-SELTEXT_M = 'CONFIRM SL NO'. "#EC NOTEXT
    X_FIELDCAT-JUST = 'C'.
    X_FIELDCAT-OUTPUTLEN = 9.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    X_FIELDCAT-FIELDNAME = 'LFIMG'.
    X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
    X_FIELDCAT-SELTEXT_M = 'DELIVERED QUANTITY'. "#EC NOTEXT
    X_FIELDCAT-JUST = 'C'.
    X_FIELDCAT-OUTPUTLEN = 18.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    X_FIELDCAT-FIELDNAME = 'ERDAT'.
    X_FIELDCAT-TABNAME = 'INT_MSEG_FINAL'.
    X_FIELDCAT-SELTEXT_M = 'DELIVERED DATE'. "#EC NOTEXT
    X_FIELDCAT-JUST = 'C'.
    X_FIELDCAT-OUTPUTLEN = 18.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    ENDFORM.                    " SUB_PREPARE_FIELDCATALOG
    *&      Form  FILL_EVENTS_TABLE
          text
    -->  p1        text
    <--  p2        text
    FORM FILL_EVENTS_TABLE .
       WA_EVENTS-NAME = 'TOP_OF_PAGE'.
       WA_EVENTS-FORM = 'PRINT_HEADING'.
       APPEND WA_EVENTS TO IT_EVENTS.
    ENDFORM.                    " FILL_EVENTS_TABLE
    FORM PRINT_HEADING. "#EC CALLED
      DATA IT_HEADINGS TYPE SLIS_T_LISTHEADER.
      DATA WA_HEADINGS LIKE LINE OF IT_HEADINGS.
      CLEAR WA_HEADINGS.
      WA_HEADINGS-TYP = 'H'.
      WA_HEADINGS-INFO = '                                          '.
      WA_HEADINGS-TYP = 'H'.
      WA_HEADINGS-INFO = ' BATCH EXPORT DETAILS REPORT '.
      APPEND WA_HEADINGS TO IT_HEADINGS.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_HEADINGS
          I_LOGO                   =  'APARLOGO' .
    ENDFORM.                    "PRINT_HEADING
    *&      Form  DISPLAY_DATA_USING_GRID
          text
    -->  p1        text
    <--  p2        text
    FORM DISPLAY_DATA_USING_GRID .
       CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
       I_BYPASSING_BUFFER                = 'X'
       I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = SY-CPROG
       IT_FIELDCAT                       = IT_FIELDCAT
       I_SAVE                            = 'A'
       IT_EVENTS                         = IT_EVENTS
       TABLES
       T_OUTTAB                          = INT_MSEG_FINAL
      IF SY-SUBRC <> 0. "#EC *
       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISPLAY_DATA_USING_GRID
    *&      Form  density_calc
          text
         -->P_WA_OBJECTDATA_AUSP1  text
         <--P_IDENSITY  text
    FORM density_calc  USING    WA_OBJECTDATA_AUSP1
                       CHANGING DENSITY.
    data: den type float,density1(8).
    density1(8) = wa_objectdata-ausp1.
    call function 'CHAR_FLTP_CONVERSION'
    exporting
      DYFLD                    = ' '
      MASKN                    = ' '
      MAXDEC                   = '16'
      MAXEXP                   = '59+'
      MINEXP                   = '60-'
    string                   = density1
      MSGTYP_DECIM             = 'W'
    importing
      DECIM                    =
      EXPON                    =
    flstr                    = den
      IVALU                    =
    EXCEPTIONS
      EXPONENT_TOO_BIG         = 1
      EXPONENT_TOO_SMALL       = 2
      STRING_NOT_FLTP          = 3
      TOO_MANY_DECIM           = 4
      OTHERS                   = 5
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    if den gt 0.
    density = 1 / den.
    density = density(5).
    density = density / 10.
    den = strlen( density ).
    if den ge 6.
      density = density(6).
      clear: den.
      den = strlen( density ).
    elseif den lt 6.
       density = density.
       clear: den.
       den = strlen( density ).
    endif.
    else.
    density = '0.000'.
    endif.
    den = strlen( density ).
    data: den3(5) type c.
    if den gt 3.
      case den.
        when '6'.
                  clear: den3.
                  compute den3 = 10000 * ( density(6) - density(5) ).
                  if den3 between 6 and 9.
                    clear: den3.
                    compute den3(2) = 10000 * ( density(5) - density(4) ).
                    compute den3 = den3(1) + 1.
                    compute den3 = den3 / 1000.
                    compute density = density(4) + den3.
                  endif.
        when '5'.
                  clear: den3.
                  compute den3 = 1000 * ( density(5) - density(4) ).
                  if den3 between 6 and 9.
                    clear: den3.
                    compute den3(2) = 1000 * ( density(4) - density(3) ).
                    compute den3 = den3(1) + 1.
                    compute den3 = den3 / 100.
                    compute density = density(3) + den3.
                  endif.
      endcase.
    endif.
    density = density(5).
    ENDFORM.                    " density_calc

    Hello,
    I haven't checked the code but from the symptom you describe it could be possible that some fields used to calculate valeus are not getting cleared between calculations.  This could result in some values from order the first order one being used in the calculation for values in the second order.
    Regards,
    Steve.

  • Batch export of markers

    I'm brand-new to Premiere, to this forum, and to video editing generally. I'm hoping someone can help with this problem. I've created several markers for my video (an avi file). I need to export each frame associated with a marker as an image file. I don't want to do this one-by-one because there are a lot of markers and it is very tedious. Is there some way to batch export such frames within the application?
    Alternatively, I can extract the <Marker> XML elements from the prproj file and get the images using a Matlab script, if I can figure out what the time is for each marker. The elements look like this:
                <Marker Version="1" Index="0">
                    <First>100072202630400</First>
                    <Second ObjectRef="33"/>
                </Marker>
    Does anyone know how to convert the <First> value to a time in seconds?
    I should mention that I've tried the PPro Project Utility, but get unreliable results.
    Any help will be appreciated.

    For CS4 and later, you can set up each export and then do them all at once through the Adobe Media Encoder.  For earlier versions, you'll have to do each export one at a time.
    In either case, the setup for each frame is done manually.  There's no auto feature for this.

  • Batch export audio in channels grouped

    Hi!
    My english is not the best so I will try to explain myself as good as possible.
    I need to get the 5.1 audio from 11 sequences in discrete channels.
    I know how to do this from each and one sequence. Right Click->Export->Audio to AIFF (s)...
    But this takes a long time.
    Is it possible to make a batch export and get the same result.
    If I mark my sequences and choose batch export, the press settings I can only get the AIFFS as mono or stereo, but I cant get it as discrete channels.
    I want it to be as same when I choose one individually.
    When I use the method each one this is the result:
    Sequence name_1
    Sequence name_2
    Sequence name_3
    Sequence name_4
    Sequence name_5
    Sequence name_6
    I hope I have made my problem clear.
    Thank you for the help
    /Sebastian

    Hello.
    here is the full script. I made a few changes. Hope it works for you.
    #target indesign
    var saveFold; 
      function main(){   
         saveFold = Folder( Folder.desktop + '/Batch' );
            if ( ! saveFold.exists ) { saveFold.create(); }
       app.documents[0].groups.firstItem().select();
      //  app.swfExportPreferences.fitMethod  = FitMethodSettings.fitGivenScalePercentage;
    //    app.swfExportPreferences.fitOption = FitDimension.fit1024x768;
        app.swfExportPreferences.fitScale = 100;
      //  app.swfExportPreferences.pageRange = "Selection";
        app.swfExportPreferences.dynamicDocumentExportReaderSpreads = 0;
        app.swfExportPreferences.rasterizePages = false;
        app.swfExportPreferences.generateHTML = false;
        app.swfExportPreferences.viewSWFAfterExporting = false;
        app.swfExportPreferences.textExportPolicy = DynamicDocumentsTextExportPolicy.live;
        //app.swfExportPreferences.includeInteractivePageCurl = true;
        app.swfExportPreferences.rasterCompression = RasterCompressionOptions.losslessCompression;
        app.swfExportPreferences.jpegQualityOptions = DynamicDocumentsJPEGQualityOptions.maximum;
        app.swfExportPreferences.curveQuality = SWFCurveQualityValue.maximum;
        app.swfExportPreferences.rasterResolution = 100;
    for (var j=0; j<app.documents.length;j++){
    groupsToJPEGs (app.documents[j]);
    function groupsToJPEGs(doc) {
          var i, grps, expFile;
        grps = doc.groups;
        for ( i = 0; i < grps.length; i++ ) {
            expFile = File( saveFold + '/'+ doc.name + '_' + ( i + 1 ) + '.swf' );
            doc.groups[i].select();
            doc.groups[i].exportFile( ExportFormat.SWF, expFile, false );
    main();
    ps. Anyone can tell me how can i make the "advanced editor" as default for replies in this forum?
    Message was edited by: Vamitul

  • How to batch export Chapters

    I would like to be able to automatically take a QT movie with Chapters marked, and create individual QT movies of each Chapter. The manual method is quite tedious!

    Choose File>Batch Export. It will put all the sequences you have exported into an Export Queue and you can then choose where to send each QT movie by highlighting the sequence and choosing Settings. If you have more than one sequence just control-click on, say, Sequence 2, and choose Batch Export. That will give you a new bin and you can send Bin 2 to a different location than Bin 1.
    It sounds like this is what you've been doing, so I don't know why it's not working now. What version of FCP do you have? Have you read up on the process in the manual?
    jesse.

  • How do i change the size of a clip using batch export?

    hi, when i try and do a batch export to change my clips from a DV PAL to PhotoJpeg 320*240 sized clips the "options" button is greyed out. so all i have as export settings are the QT presets in a pulldown list. is there any way i can create my own setting? (and the also save that?)
    thx

    what i'm seeing is that
    a) selecting all files in Media Man. gives me the option to size and set codecs but not the audio off.
    b) selecting all files in Batch Export allows me to pick a format (QT, aiff etc) choose a preset (photoJpeg included) select whether to include audio and video or both but not set the size or customize the QT settings
    c) selecting all clips then "file>export>using QT conversion" gives me all options, but seem to grab only the first clip.

  • How batch export layers to files png in cc

    I am having trouble with an export layers to files script i am wanting to batch export layer to png and this script i have seems to be the one i want although every time i run the script i get this error message "could not complete the action  since the destination folder doesn't exist" the script required me to hard code my destination path the path i require is "C:/Users/Tim/Desktop/Backdrops/png/" I am not completely sure why its stating it does not exist any help would be greatly appreciated. i have tried to contact the creator but the post it was on was very old.
    // enable double clicking from the Macintosh Finder or the Windows Explorer
    #target photoshop
    //=================================================================
    // Globals
    //=================================================================
    var exportPath = "/Users/pedr/Documents/Work/Clients/Pathways/Learning_Hub/Source/Comics/export";
    exportPath = exportPath + '/layers';
    // UI strings to be localized
    var strTitle = localize("$$$/JavaScripts/X2L/Title=X2L");
    var strButtonRun = localize("$$$/JavaScripts/X2L/Run=Run");
    var strButtonCancel = localize("$$$/JavaScripts/X2L/Cancel=Cancel");
    var strHelpText = localize("$$$/JavaScripts/X2L/Help=Please specify the format and location for saving each layer as a file.");
    var strLabelDestination = localize("$$$/JavaScripts/X2L/Destination=Destination:");
    var strButtonBrowse = localize("$$$/JavaScripts/X2L/Browse=&Browse...");
    var strLabelFileNamePrefix = localize("$$$/JavaScripts/X2L/FileNamePrefix=File Name Prefix:");
    var strCheckboxVisibleOnly = localize("$$$/JavaScripts/X2L/VisibleOnly=&Visible Layers Only");
    var strLabelFileType = localize("$$$/JavaScripts/X2L/FileType=File Type:");
    var strCheckboxIncludeICCProfile = localize("$$$/JavaScripts/X2L/IncludeICC=&Include ICC Profile");
    var strJPEGOptions = localize("$$$/JavaScripts/X2L/JPEGOptions=JPEG Options:");
    var strLabelQuality = localize("$$$/JavaScripts/X2L/Quality=Quality:");
    var strCheckboxMaximizeCompatibility = localize("$$$/JavaScripts/X2L/Maximize=&Maximize Compatibility");
    var strTIFFOptions = localize("$$$/JavaScripts/X2L/TIFFOptions=TIFF Options:");
    var strLabelImageCompression = localize("$$$/JavaScripts/X2L/ImageCompression=Image Compression:");
    var strNone = localize("$$$/JavaScripts/X2L/None=None");
    var strPDFOptions = localize("$$$/JavaScripts/X2L/PDFOptions=PDF Options:");
    var strLabelEncoding = localize("$$$/JavaScripts/X2L/Encoding=Encoding:");
    var strTargaOptions = localize("$$$/JavaScripts/X2L/TargaOptions=Targa Options:");
    var strLabelDepth = localize("$$$/JavaScripts/X2L/Depth=Depth:");
    var strRadiobutton16bit = localize("$$$/JavaScripts/X2L/Bit16=16bit");
    var strRadiobutton24bit = localize("$$$/JavaScripts/X2L/Bit24=24bit");
    var strRadiobutton32bit = localize("$$$/JavaScripts/X2L/Bit32=32bit");
    var strBMPOptions = localize("$$$/JavaScripts/X2L/BMPOptions=BMP Options:");
    var strAlertSpecifyDestination = localize("$$$/JavaScripts/X2L/SpecifyDestination=Please specify destination.");
    var strAlertDestinationNotExist = localize("$$$/JavaScripts/X2L/DestionationDoesNotExist=Destination does not exist.");
    var strTitleSelectDestination = localize("$$$/JavaScripts/X2L/SelectDestination=Select Destination");
    var strAlertDocumentMustBeOpened = localize("$$$/JavaScripts/X2L/OneDocument=You must have a document open to export!");
    var strAlertNeedMultipleLayers = localize("$$$/JavaScripts/X2L/NoLayers=You need a document with multiple layers to export!");
    var strAlertWasSuccessful = localize("$$$/JavaScripts/X2L/Success= was successful.");
    var strUnexpectedError = localize("$$$/JavaScripts/X2L/Unexpected=Unexpected error");
    var strMessage = localize("$$$/JavaScripts/X2L/Message=X2L");
    var stretQuality = localize( "$$$/locale_specific/JavaScripts/X2L/ETQualityLength=30" );
    var stretDestination = localize( "$$$/locale_specific/JavaScripts/X2L/ETDestinationLength=160" );
    var strddFileType = localize( "$$$/locale_specific/JavaScripts/X2L/DDFileType=100" );
    var strpnlOptions = localize( "$$$/locale_specific/JavaScripts/X2L/PNLOptions=100" );
    var strPNG8Options = localize("$$$/JavaScripts/X2L/PNG8Options=PNG-8 Options:");
    var strCheckboxPNGTransparency = localize("$$$/JavaScripts/X2L/Transparency=Transparency");
    var strCheckboxPNGInterlaced = localize("$$$/JavaScripts/X2L/Interlaced=Interlaced");
    var strCheckboxPNGTrm = localize("$$$/JavaScripts/X2L/Trim=Trim Layers");
    var strPNG24Options = localize("$$$/JavaScripts/X2L/PNG24Options=PNG-24 Options:");
    // the drop down list indexes for file type
    var png24Index = 7;
    main();
    // Functions
    // Function: main
    // Usage: the core routine for this script
    // Input: <none>
    // Return: <none>
    function main() {
        if ( app.documents.length <= 0 ) {
            if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                alert( strAlertDocumentMustBeOpened );
            return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
        var exportInfo = new Object();
        initExportInfo(exportInfo);
        // look for last used params via Photoshop registry, getCustomOptions will throw if none exist
        try {
        catch(e) {
            // it's ok if we don't have any options, continue with defaults
        try {
            var docName = app.activeDocument.name;  // save the app.activeDocument name before duplicate.
            var layerCount = app.documents[docName].layers.length;
            var layerSetsCount = app.documents[docName].layerSets.length;
            if ((layerCount <= 1)&&(layerSetsCount <= 0)) {
                if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                    alert( strAlertNeedMultipleLayers );
                return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
            } else {
                var rememberMaximize;
                var needMaximize = exportInfo.psdMaxComp ? QueryStateType.ALWAYS : QueryStateType.NEVER;
                app.activeDocument = app.documents[docName];
                var duppedDocument = app.activeDocument.duplicate();
                duppedDocument.activeLayer = duppedDocument.layers[duppedDocument.layers.length-1]; // for removing
                setInvisibleAllArtLayers(duppedDocument);
                exportChildren(duppedDocument, app.documents[docName], exportInfo, duppedDocument, exportInfo.fileNamePrefix);
                duppedDocument.close( SaveOptions.DONOTSAVECHANGES );
                if ( rememberMaximize != undefined ) {
                    app.preferences.maximizeCompatibility = rememberMaximize;
                if ( DialogModes.ALL == app.playbackDisplayDialogs ) {
                    //alert(strTitle + strAlertWasSuccessful);
                app.playbackDisplayDialogs = DialogModes.ALL;
        } catch (e) {
            if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                alert(e);
            return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
    // Function: settingDialog
    // Usage: pop the ui and get user settings
    // Input: exportInfo object containing our parameters
    // Return: on ok, the dialog info is set to the exportInfo object
    function settingDialog(exportInfo) {
      return;
    // Function: hideAllFileTypePanel
    // Usage: hide all the panels in the common actions
    // Input: <none>, dlgMain is a global for this script
    // Return: <none>, all panels are now hidden
    function hideAllFileTypePanel() {
    // Function: initExportInfo
    // Usage: create our default parameters
    // Input: a new Object
    // Return: a new object with params set to default
    function initExportInfo(exportInfo) {
        //exportInfo.destination = new String(exportPath);
        exportInfo.fileNamePrefix = new String("untitled_");
        exportInfo.visibleOnly = false;
        exportInfo.fileType = png24Index;
        exportInfo.icc = true;
        exportInfo.png24Transparency = true;
        exportInfo.png24Interlaced = false;
        exportInfo.png24Trim = true;
        try {
            exportInfo.destination = Folder(new String(exportPath)).fsName; // destination folder
            var tmp = app.activeDocument.fullName.name;
            exportInfo.fileNamePrefix = decodeURI(tmp.substring(0, tmp.indexOf("."))); // filename body part
        } catch(someError) {
            exportInfo.destination = new String(exportPath);
            exportInfo.fileNamePrefix = app.activeDocument.name; // filename body part
    // Function: saveFile
    // Usage: the worker routine, take our params and save the file accordingly
    // Input: reference to the document, the name of the output file,
    //        export info object containing more information
    // Return: <none>, a file on disk
    function saveFile( docRef, fileNameBody, exportInfo) {
                saveFile(docRef, fileNameBody, exportInfo, false, true);
                function saveFile( docRef, fileNameBody, exportInfo, interlacedValue, transparencyValue) {
                var id6 = charIDToTypeID( "Expr" );
                    var desc3 = new ActionDescriptor();
                    var id7 = charIDToTypeID( "Usng" );
                        var desc4 = new ActionDescriptor();
                        var id8 = charIDToTypeID( "Op  " );
                        var id9 = charIDToTypeID( "SWOp" );
                        var id10 = charIDToTypeID( "OpSa" );
                        desc4.putEnumerated( id8, id9, id10 );
                        var id11 = charIDToTypeID( "Fmt " );
                        var id12 = charIDToTypeID( "IRFm" );
                        var id13 = charIDToTypeID( "PN24" );
                        desc4.putEnumerated( id11, id12, id13 );
                        var id14 = charIDToTypeID( "Intr" );
                        desc4.putBoolean( id14, interlacedValue );
                        var id15 = charIDToTypeID( "Trns" );
                        desc4.putBoolean( id15, transparencyValue );
                        var id16 = charIDToTypeID( "Mtt " );
                        desc4.putBoolean( id16, true );
                        var id17 = charIDToTypeID( "MttR" );
                        desc4.putInteger( id17, 255 );
                        var id18 = charIDToTypeID( "MttG" );
                        desc4.putInteger( id18, 255 );
                        var id19 = charIDToTypeID( "MttB" );
                        desc4.putInteger( id19, 255 );
                        var id20 = charIDToTypeID( "SHTM" );
                        desc4.putBoolean( id20, false );
                        var id21 = charIDToTypeID( "SImg" );
                        desc4.putBoolean( id21, true );
                        var id22 = charIDToTypeID( "SSSO" );
                        desc4.putBoolean( id22, false );
                        var id23 = charIDToTypeID( "SSLt" );
                            var list1 = new ActionList();
                        desc4.putList( id23, list1 );
                        var id24 = charIDToTypeID( "DIDr" );
                        desc4.putBoolean( id24, false );
                        var id25 = charIDToTypeID( "In  " );
                        desc4.putPath( id25, new File( exportPath + "C:/Users/Tim/Desktop/Backdrops/png/"  + fileNameBody + ".png") );
                    var id26 = stringIDToTypeID( "SaveForWeb" );
                    desc3.putObject( id7, id26, desc4 );
                executeAction( id6, desc3, DialogModes.NO );
    // Function: zeroSuppress
    // Usage: return a string padded to digit(s)
    // Input: num to convert, digit count needed
    // Return: string padded to digit length
    function zeroSuppress (num, digit) {
        var tmp = num.toString();
        while (tmp.length < digit) {
            tmp = "0" + tmp;
        return tmp;
    // Function: setInvisibleAllArtLayers
    // Usage: unlock and make invisible all art layers, recursively
    // Input: document or layerset
    // Return: all art layers are unlocked and invisible
    function setInvisibleAllArtLayers(obj) {
        for( var i = 0; i < obj.artLayers.length; i++) {
            obj.artLayers[i].allLocked = false;
            obj.artLayers[i].visible = false;
        for( var i = 0; i < obj.layerSets.length; i++) {
            setInvisibleAllArtLayers(obj.layerSets[i]);
    // Function: removeAllInvisibleArtLayers
    // Usage: remove all the invisible art layers, recursively
    // Input: document or layer set
    // Return: <none>, all layers that were invisible are now gone
    function removeAllInvisibleArtLayers(obj) {
        for( var i = obj.artLayers.length-1; 0 <= i; i--) {
            try {
                if(!obj.artLayers[i].visible) {
                    obj.artLayers[i].remove();
            catch (e) {
        for( var i = obj.layerSets.length-1; 0 <= i; i--) {
            removeAllInvisibleArtLayers(obj.layerSets[i]);
    // Function: removeAllEmptyLayerSets
    // Usage: find all empty layer sets and remove them, recursively
    // Input: document or layer set
    // Return: empty layer sets are now gone
    function removeAllEmptyLayerSets(obj) {
        var foundEmpty = true;
        for( var i = obj.layerSets.length-1; 0 <= i; i--) {
            if( removeAllEmptyLayerSets(obj.layerSets[i])) {
                obj.layerSets[i].remove();
            } else {
                foundEmpty = false;
        if (obj.artLayers.length > 0) {
            foundEmpty = false;
        return foundEmpty;
    // Function: zeroSuppress
    // Usage: return a string padded to digit(s)
    // Input: num to convert, digit count needed
    // Return: string padded to digit length
    function removeAllInvisible(docRef) {
        removeAllInvisibleArtLayers(docRef);
        removeAllEmptyLayerSets(docRef);
    // Function: exportChildren
    // Usage: find all the children in this document to save
    // Input: duplicate document, original document, export info,
    //        reference to document, starting file name
    // Return: <none>, documents are saved accordingly
    function exportChildren(dupObj, orgObj, exportInfo, dupDocRef, fileNamePrefix) {
        for( var i = 0; i < dupObj.artLayers.length; i++) {
            if (exportInfo.visibleOnly) { // visible layer only
                if (!orgObj.artLayers[i].visible) {
                    continue;
            dupObj.artLayers[i].visible = true;
            var layerName = dupObj.artLayers[i].name;  // store layer name before change doc
            var duppedDocumentTmp = dupDocRef.duplicate();
            if ((png24Index == exportInfo.fileType)||(png8Index == exportInfo.fileType)) { // PSD: Keep transparency
                removeAllInvisible(duppedDocumentTmp);
                //PNGFileOptions
                        if (activeDocument.activeLayer.isBackgroundLayer == false) { //is it anything but a background layer?
                            app.activeDocument.trim(TrimType.TRANSPARENT);
            } else { // just flatten
                duppedDocumentTmp.flatten();
            // Edit
            var docName = app.activeDocument.name;
            // For some reason indexOf fails if we include the '-', so we use 'copy' and decrement the index by 1.
            docName = docName.slice(0, docName.indexOf('copy')-1);
            var fileNameBody = (docName+'_'+layerName).toLowerCase();
            fileNameBody = fileNameBody.replace(/[:\/\\*\?\"\<\>\|]/g, "_");  // '/\:*?"<>|' -> '_'
            if (fileNameBody.length > 120) {
                fileNameBody = fileNameBody.substring(0,120);
            saveFile(duppedDocumentTmp, fileNameBody, exportInfo);
            duppedDocumentTmp.close(SaveOptions.DONOTSAVECHANGES);
            dupObj.artLayers[i].visible = false;
        for( var i = 0; i < dupObj.layerSets.length; i++) {
            if (exportInfo.visibleOnly) { // visible layer only
                if (!orgObj.layerSets[i].visible) {
                    continue;
            var fileNameBody = fileNamePrefix;
            fileNameBody += "_" + zeroSuppress(i, 4) + "s";
            exportChildren(dupObj.layerSets[i], orgObj.layerSets[i], exportInfo, dupDocRef, fileNameBody);  // recursive call
    // Function: objectToDescriptor
    // Usage: create an ActionDescriptor from a JavaScript Object
    // Input: JavaScript Object (o)
    //        object unique string (s)
    //        Pre process converter (f)
    // Return: ActionDescriptor
    // NOTE: Only boolean, string, number and UnitValue are supported, use a pre processor
    //       to convert (f) other types to one of these forms.
    // REUSE: This routine is used in other scripts. Please update those if you
    //        modify. I am not using include or eval statements as I want these
    //        scripts self contained.
    function objectToDescriptor (o, s, f) {
        o = {};
        var d = new ActionDescriptor;
        var l = o.reflect.properties.length;
        d.putString( app.charIDToTypeID( 'Msge' ), s );
        for (var i = 0; i < l; i++ ) {
            var k = o.reflect.properties[i].toString();
            if (k == "__proto__" || k == "__count__" || k == "__class__" || k == "reflect")
                continue;
            var v = o[ k ];
            k = app.stringIDToTypeID(k);
            switch ( typeof(v) ) {
                case "boolean":
                    d.putBoolean(k, v);
                    break;
                case "string":
                    d.putString(k, v);
                    break;
                case "number":
                    d.putDouble(k, v);
                    break;
                default:
                    if ( v instanceof UnitValue ) {
                        var uc = new Object;
                        uc["px"] = charIDToTypeID("#Rlt"); // unitDistance
                        uc["%"] = charIDToTypeID("#Prc"); // unitPercent
                        d.putUnitDouble(k, uc[v.type], v.value);
                    } else {
                        throw( new Error("Unsupported type in objectToDescriptor " + typeof(v) ) );
        return d;
    // Function: descriptorToObject
    // Usage: update a JavaScript Object from an ActionDescriptor
    // Input: JavaScript Object (o), current object to update (output)
    //        Photoshop ActionDescriptor (d), descriptor to pull new params for object from
    //        object unique string (s)
    //        JavaScript Function (f), post process converter utility to convert
    // Return: Nothing, update is applied to passed in JavaScript Object (o)
    // NOTE: Only boolean, string, number and UnitValue are supported, use a post processor
    //       to convert (f) other types to one of these forms.
    // REUSE: This routine is used in other scripts. Please update those if you
    //        modify. I am not using include or eval statements as I want these
    //        scripts self contained.
    function descriptorToObject (o, d, s, f) {
        var l = d.count;
        if (l) {
            var keyMessage = app.charIDToTypeID( 'Msge' );
            if ( d.hasKey(keyMessage) && ( s != d.getString(keyMessage) )) return;
        for (var i = 0; i < l; i++ ) {
            var k = d.getKey(i); // i + 1 ?
            var t = d.getType(k);
            strk = app.typeIDToStringID(k);
            switch (t) {
                case DescValueType.BOOLEANTYPE:
                    o[strk] = d.getBoolean(k);
                    break;
                case DescValueType.STRINGTYPE:
                    o[strk] = d.getString(k);
                    break;
                case DescValueType.DOUBLETYPE:
                    o[strk] = d.getDouble(k);
                    break;
                case DescValueType.UNITDOUBLE:
                    var uc = new Object;
                    uc[charIDToTypeID("#Rlt")] = "px"; // unitDistance
                    uc[charIDToTypeID("#Prc")] = "%"; // unitPercent
                    uc[charIDToTypeID("#Pxl")] = "px"; // unitPixels
                    var ut = d.getUnitDoubleType(k);
                    var uv = d.getUnitDoubleValue(k);
                    o[strk] = new UnitValue( uv, uc[ut] );
                    break;
                case DescValueType.INTEGERTYPE:
                case DescValueType.ALIASTYPE:
                case DescValueType.CLASSTYPE:
                case DescValueType.ENUMERATEDTYPE:
                case DescValueType.LISTTYPE:
                case DescValueType.OBJECTTYPE:
                case DescValueType.RAWTYPE:
                case DescValueType.REFERENCETYPE:
                default:
                    throw( new Error("Unsupported type in descriptorToObject " + t ) );
        if (undefined != f) {
            o = f(o);
    // Function: preProcessExportInfo
    // Usage: convert Photoshop enums to strings for storage
    // Input: JavaScript Object of my params for this script
    // Return: JavaScript Object with objects converted for storage
    function preProcessExportInfo(o) {
        o.tiffCompression = o.tiffCompression.toString();
        o.pdfEncoding = o.pdfEncoding.toString();
        o.targaDepth = o.targaDepth.toString();
        o.bmpDepth = o.bmpDepth.toString();
        return o;
    // Function: postProcessExportInfo
    // Usage: convert strings from storage to Photoshop enums
    // Input: JavaScript Object of my params in string form
    // Return: JavaScript Object with objects in enum form
    function postProcessExportInfo(o) {
        o.tiffCompression = eval(o.tiffCompression);
        o.pdfEncoding = eval(o.pdfEncoding);
        o.targaDepth = eval(o.targaDepth);
        o.bmpDepth = eval(o.bmpDepth);
        return o;
    // Function: StrToIntWithDefault
    // Usage: convert a string to a number, first stripping all characters
    // Input: string and a default number
    // Return: a number
    function StrToIntWithDefault( s, n ) {
        var onlyNumbers = /[^0-9]/g;
        var t = s.replace( onlyNumbers, "" );
        t = parseInt( t );
        if ( ! isNaN( t ) ) {
            n = t;
        return n;
    // End X2L.jsx

    I have put the like var exportPath = "~/Desktop/Backdrops/png/";  and have removed the exportPath = exportPath + '/layers';
    but when i run the script it still comes up with the error
    could not complete action since the destination folder does not exist
    if you are using the extendedscript toolkit would be able to run the script and see if you know were the problem is coming from i cant seem to understand why its not seeing the destination.
    thanks for all your help
    // enable double clicking from the Macintosh Finder or the Windows Explorer
    #target photoshop
    //=================================================================
    // Globals
    //=================================================================
    var exportPath = "~/Desktop/Backdrops/png/";
    // UI strings to be localized
    var strTitle = localize("$$$/JavaScripts/X2L/Title=X2L");
    var strButtonRun = localize("$$$/JavaScripts/X2L/Run=Run");
    var strButtonCancel = localize("$$$/JavaScripts/X2L/Cancel=Cancel");
    var strHelpText = localize("$$$/JavaScripts/X2L/Help=Please specify the format and location for saving each layer as a file.");
    var strLabelDestination = localize("$$$/JavaScripts/X2L/Destination=Destination:");
    var strButtonBrowse = localize("$$$/JavaScripts/X2L/Browse=&Browse...");
    var strLabelFileNamePrefix = localize("$$$/JavaScripts/X2L/FileNamePrefix=File Name Prefix:");
    var strCheckboxVisibleOnly = localize("$$$/JavaScripts/X2L/VisibleOnly=&Visible Layers Only");
    var strLabelFileType = localize("$$$/JavaScripts/X2L/FileType=File Type:");
    var strCheckboxIncludeICCProfile = localize("$$$/JavaScripts/X2L/IncludeICC=&Include ICC Profile");
    var strJPEGOptions = localize("$$$/JavaScripts/X2L/JPEGOptions=JPEG Options:");
    var strLabelQuality = localize("$$$/JavaScripts/X2L/Quality=Quality:");
    var strCheckboxMaximizeCompatibility = localize("$$$/JavaScripts/X2L/Maximize=&Maximize Compatibility");
    var strTIFFOptions = localize("$$$/JavaScripts/X2L/TIFFOptions=TIFF Options:");
    var strLabelImageCompression = localize("$$$/JavaScripts/X2L/ImageCompression=Image Compression:");
    var strNone = localize("$$$/JavaScripts/X2L/None=None");
    var strPDFOptions = localize("$$$/JavaScripts/X2L/PDFOptions=PDF Options:");
    var strLabelEncoding = localize("$$$/JavaScripts/X2L/Encoding=Encoding:");
    var strTargaOptions = localize("$$$/JavaScripts/X2L/TargaOptions=Targa Options:");
    var strLabelDepth = localize("$$$/JavaScripts/X2L/Depth=Depth:");
    var strRadiobutton16bit = localize("$$$/JavaScripts/X2L/Bit16=16bit");
    var strRadiobutton24bit = localize("$$$/JavaScripts/X2L/Bit24=24bit");
    var strRadiobutton32bit = localize("$$$/JavaScripts/X2L/Bit32=32bit");
    var strBMPOptions = localize("$$$/JavaScripts/X2L/BMPOptions=BMP Options:");
    var strAlertSpecifyDestination = localize("$$$/JavaScripts/X2L/SpecifyDestination=Please specify destination.");
    var strAlertDestinationNotExist = localize("$$$/JavaScripts/X2L/DestionationDoesNotExist=Destination does not exist.");
    var strTitleSelectDestination = localize("$$$/JavaScripts/X2L/SelectDestination=Select Destination");
    var strAlertDocumentMustBeOpened = localize("$$$/JavaScripts/X2L/OneDocument=You must have a document open to export!");
    var strAlertNeedMultipleLayers = localize("$$$/JavaScripts/X2L/NoLayers=You need a document with multiple layers to export!");
    var strAlertWasSuccessful = localize("$$$/JavaScripts/X2L/Success= was successful.");
    var strUnexpectedError = localize("$$$/JavaScripts/X2L/Unexpected=Unexpected error");
    var strMessage = localize("$$$/JavaScripts/X2L/Message=X2L");
    var stretQuality = localize( "$$$/locale_specific/JavaScripts/X2L/ETQualityLength=30" );
    var stretDestination = localize( "$$$/locale_specific/JavaScripts/X2L/ETDestinationLength=160" );
    var strddFileType = localize( "$$$/locale_specific/JavaScripts/X2L/DDFileType=100" );
    var strpnlOptions = localize( "$$$/locale_specific/JavaScripts/X2L/PNLOptions=100" );
    var strPNG8Options = localize("$$$/JavaScripts/X2L/PNG8Options=PNG-8 Options:");
    var strCheckboxPNGTransparency = localize("$$$/JavaScripts/X2L/Transparency=Transparency");
    var strCheckboxPNGInterlaced = localize("$$$/JavaScripts/X2L/Interlaced=Interlaced");
    var strCheckboxPNGTrm = localize("$$$/JavaScripts/X2L/Trim=Trim Layers");
    var strPNG24Options = localize("$$$/JavaScripts/X2L/PNG24Options=PNG-24 Options:");
    // the drop down list indexes for file type
    var png24Index = 7;
    main();
    // Functions
    // Function: main
    // Usage: the core routine for this script
    // Input: <none>
    // Return: <none>
    function main() {
        if ( app.documents.length <= 0 ) {
            if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                alert( strAlertDocumentMustBeOpened );
            return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
        var exportInfo = new Object();
        initExportInfo(exportInfo);
        // look for last used params via Photoshop registry, getCustomOptions will throw if none exist
        try {
        catch(e) {
            // it's ok if we don't have any options, continue with defaults
        try {
            var docName = app.activeDocument.name;  // save the app.activeDocument name before duplicate.
            var layerCount = app.documents[docName].layers.length;
            var layerSetsCount = app.documents[docName].layerSets.length;
            if ((layerCount <= 1)&&(layerSetsCount <= 0)) {
                if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                    alert( strAlertNeedMultipleLayers );
                return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
            } else {
                var rememberMaximize;
                var needMaximize = exportInfo.psdMaxComp ? QueryStateType.ALWAYS : QueryStateType.NEVER;
                app.activeDocument = app.documents[docName];
                var duppedDocument = app.activeDocument.duplicate();
                duppedDocument.activeLayer = duppedDocument.layers[duppedDocument.layers.length-1]; // for removing
                setInvisibleAllArtLayers(duppedDocument);
                exportChildren(duppedDocument, app.documents[docName], exportInfo, duppedDocument, exportInfo.fileNamePrefix);
                duppedDocument.close( SaveOptions.DONOTSAVECHANGES );
                if ( rememberMaximize != undefined ) {
                    app.preferences.maximizeCompatibility = rememberMaximize;
                if ( DialogModes.ALL == app.playbackDisplayDialogs ) {
                    //alert(strTitle + strAlertWasSuccessful);
                app.playbackDisplayDialogs = DialogModes.ALL;
        } catch (e) {
            if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                alert(e);
            return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
    // Function: settingDialog
    // Usage: pop the ui and get user settings
    // Input: exportInfo object containing our parameters
    // Return: on ok, the dialog info is set to the exportInfo object
    function settingDialog(exportInfo) {
      return;
    // Function: hideAllFileTypePanel
    // Usage: hide all the panels in the common actions
    // Input: <none>, dlgMain is a global for this script
    // Return: <none>, all panels are now hidden
    function hideAllFileTypePanel() {
    // Function: initExportInfo
    // Usage: create our default parameters
    // Input: a new Object
    // Return: a new object with params set to default
    function initExportInfo(exportInfo) {
        //exportInfo.destination = new String(exportPath);
        exportInfo.fileNamePrefix = new String("untitled_");
        exportInfo.visibleOnly = false;
        exportInfo.fileType = png24Index;
        exportInfo.icc = true;
        exportInfo.png24Transparency = true;
        exportInfo.png24Interlaced = false;
        exportInfo.png24Trim = true;
        try {
            exportInfo.destination = Folder(new String(exportPath)).fsName; // destination folder
            var tmp = app.activeDocument.fullName.name;
            exportInfo.fileNamePrefix = decodeURI(tmp.substring(0, tmp.indexOf("."))); // filename body part
        } catch(someError) {
            exportInfo.destination = new String(exportPath);
            exportInfo.fileNamePrefix = app.activeDocument.name; // filename body part
    // Function: saveFile
    // Usage: the worker routine, take our params and save the file accordingly
    // Input: reference to the document, the name of the output file,
    //        export info object containing more information
    // Return: <none>, a file on disk
    function saveFile( docRef, fileNameBody, exportInfo) {
                saveFile(docRef, fileNameBody, exportInfo, false, true);
                function saveFile( docRef, fileNameBody, exportInfo, interlacedValue, transparencyValue) {
                var id6 = charIDToTypeID( "Expr" );
                    var desc3 = new ActionDescriptor();
                    var id7 = charIDToTypeID( "Usng" );
                        var desc4 = new ActionDescriptor();
                        var id8 = charIDToTypeID( "Op  " );
                        var id9 = charIDToTypeID( "SWOp" );
                        var id10 = charIDToTypeID( "OpSa" );
                        desc4.putEnumerated( id8, id9, id10 );
                        var id11 = charIDToTypeID( "Fmt " );
                        var id12 = charIDToTypeID( "IRFm" );
                        var id13 = charIDToTypeID( "PN24" );
                        desc4.putEnumerated( id11, id12, id13 );
                        var id14 = charIDToTypeID( "Intr" );
                        desc4.putBoolean( id14, interlacedValue );
                        var id15 = charIDToTypeID( "Trns" );
                        desc4.putBoolean( id15, transparencyValue );
                        var id16 = charIDToTypeID( "Mtt " );
                        desc4.putBoolean( id16, true );
                        var id17 = charIDToTypeID( "MttR" );
                        desc4.putInteger( id17, 255 );
                        var id18 = charIDToTypeID( "MttG" );
                        desc4.putInteger( id18, 255 );
                        var id19 = charIDToTypeID( "MttB" );
                        desc4.putInteger( id19, 255 );
                        var id20 = charIDToTypeID( "SHTM" );
                        desc4.putBoolean( id20, false );
                        var id21 = charIDToTypeID( "SImg" );
                        desc4.putBoolean( id21, true );
                        var id22 = charIDToTypeID( "SSSO" );
                        desc4.putBoolean( id22, false );
                        var id23 = charIDToTypeID( "SSLt" );
                            var list1 = new ActionList();
                        desc4.putList( id23, list1 );
                        var id24 = charIDToTypeID( "DIDr" );
                        desc4.putBoolean( id24, false );
                        var id25 = charIDToTypeID( "In  " );
                        desc4.putPath( id25, new File( exportPath + "C:/Users/Tim/Desktop/Backdrops/png/"  + fileNameBody + ".png") );
                    var id26 = stringIDToTypeID( "SaveForWeb" );
                    desc3.putObject( id7, id26, desc4 );
                executeAction( id6, desc3, DialogModes.NO );
    // Function: zeroSuppress
    // Usage: return a string padded to digit(s)
    // Input: num to convert, digit count needed
    // Return: string padded to digit length
    function zeroSuppress (num, digit) {
        var tmp = num.toString();
        while (tmp.length < digit) {
            tmp = "0" + tmp;
        return tmp;
    // Function: setInvisibleAllArtLayers
    // Usage: unlock and make invisible all art layers, recursively
    // Input: document or layerset
    // Return: all art layers are unlocked and invisible
    function setInvisibleAllArtLayers(obj) {
        for( var i = 0; i < obj.artLayers.length; i++) {
            obj.artLayers[i].allLocked = false;
            obj.artLayers[i].visible = false;
        for( var i = 0; i < obj.layerSets.length; i++) {
            setInvisibleAllArtLayers(obj.layerSets[i]);
    // Function: removeAllInvisibleArtLayers
    // Usage: remove all the invisible art layers, recursively
    // Input: document or layer set
    // Return: <none>, all layers that were invisible are now gone
    function removeAllInvisibleArtLayers(obj) {
        for( var i = obj.artLayers.length-1; 0 <= i; i--) {
            try {
                if(!obj.artLayers[i].visible) {
                    obj.artLayers[i].remove();
            catch (e) {
        for( var i = obj.layerSets.length-1; 0 <= i; i--) {
            removeAllInvisibleArtLayers(obj.layerSets[i]);
    // Function: removeAllEmptyLayerSets
    // Usage: find all empty layer sets and remove them, recursively
    // Input: document or layer set
    // Return: empty layer sets are now gone
    function removeAllEmptyLayerSets(obj) {
        var foundEmpty = true;
        for( var i = obj.layerSets.length-1; 0 <= i; i--) {
            if( removeAllEmptyLayerSets(obj.layerSets[i])) {
                obj.layerSets[i].remove();
            } else {
                foundEmpty = false;
        if (obj.artLayers.length > 0) {
            foundEmpty = false;
        return foundEmpty;
    // Function: zeroSuppress
    // Usage: return a string padded to digit(s)
    // Input: num to convert, digit count needed
    // Return: string padded to digit length
    function removeAllInvisible(docRef) {
        removeAllInvisibleArtLayers(docRef);
        removeAllEmptyLayerSets(docRef);
    // Function: exportChildren
    // Usage: find all the children in this document to save
    // Input: duplicate document, original document, export info,
    //        reference to document, starting file name
    // Return: <none>, documents are saved accordingly
    function exportChildren(dupObj, orgObj, exportInfo, dupDocRef, fileNamePrefix) {
        for( var i = 0; i < dupObj.artLayers.length; i++) {
            if (exportInfo.visibleOnly) { // visible layer only
                if (!orgObj.artLayers[i].visible) {
                    continue;
            dupObj.artLayers[i].visible = true;
            var layerName = dupObj.artLayers[i].name;  // store layer name before change doc
            var duppedDocumentTmp = dupDocRef.duplicate();
            if ((png24Index == exportInfo.fileType)||(png8Index == exportInfo.fileType)) { // PSD: Keep transparency
                removeAllInvisible(duppedDocumentTmp);
                //PNGFileOptions
                        if (activeDocument.activeLayer.isBackgroundLayer == false) { //is it anything but a background layer?
                            app.activeDocument.trim(TrimType.TRANSPARENT);
            } else { // just flatten
                duppedDocumentTmp.flatten();
            // Edit
            var docName = app.activeDocument.name;
            // For some reason indexOf fails if we include the '-', so we use 'copy' and decrement the index by 1.
            docName = docName.slice(0, docName.indexOf('copy')-1);
            var fileNameBody = (docName+'_'+layerName).toLowerCase();
            fileNameBody = fileNameBody.replace(/[:\/\\*\?\"\<\>\|]/g, "_");  // '/\:*?"<>|' -> '_'
            if (fileNameBody.length > 120) {
                fileNameBody = fileNameBody.substring(0,120);
            saveFile(duppedDocumentTmp, fileNameBody, exportInfo);
            duppedDocumentTmp.close(SaveOptions.DONOTSAVECHANGES);
            dupObj.artLayers[i].visible = false;
        for( var i = 0; i < dupObj.layerSets.length; i++) {
            if (exportInfo.visibleOnly) { // visible layer only
                if (!orgObj.layerSets[i].visible) {
                    continue;
            var fileNameBody = fileNamePrefix;
            fileNameBody += "_" + zeroSuppress(i, 4) + "s";
            exportChildren(dupObj.layerSets[i], orgObj.layerSets[i], exportInfo, dupDocRef, fileNameBody);  // recursive call
    // Function: objectToDescriptor
    // Usage: create an ActionDescriptor from a JavaScript Object
    // Input: JavaScript Object (o)
    //        object unique string (s)
    //        Pre process converter (f)
    // Return: ActionDescriptor
    // NOTE: Only boolean, string, number and UnitValue are supported, use a pre processor
    //       to convert (f) other types to one of these forms.
    // REUSE: This routine is used in other scripts. Please update those if you
    //        modify. I am not using include or eval statements as I want these
    //        scripts self contained.
    function objectToDescriptor (o, s, f) {
        o = {};
        var d = new ActionDescriptor;
        var l = o.reflect.properties.length;
        d.putString( app.charIDToTypeID( 'Msge' ), s );
        for (var i = 0; i < l; i++ ) {
            var k = o.reflect.properties[i].toString();
            if (k == "__proto__" || k == "__count__" || k == "__class__" || k == "reflect")
                continue;
            var v = o[ k ];
            k = app.stringIDToTypeID(k);
            switch ( typeof(v) ) {
                case "boolean":
                    d.putBoolean(k, v);
                    break;
                case "string":
                    d.putString(k, v);
                    break;
                case "number":
                    d.putDouble(k, v);
                    break;
                default:
                    if ( v instanceof UnitValue ) {
                        var uc = new Object;
                        uc["px"] = charIDToTypeID("#Rlt"); // unitDistance
                        uc["%"] = charIDToTypeID("#Prc"); // unitPercent
                        d.putUnitDouble(k, uc[v.type], v.value);
                    } else {
                        throw( new Error("Unsupported type in objectToDescriptor " + typeof(v) ) );
        return d;
    // Function: descriptorToObject
    // Usage: update a JavaScript Object from an ActionDescriptor
    // Input: JavaScript Object (o), current object to update (output)
    //        Photoshop ActionDescriptor (d), descriptor to pull new params for object from
    //        object unique string (s)
    //        JavaScript Function (f), post process converter utility to convert
    // Return: Nothing, update is applied to passed in JavaScript Object (o)
    // NOTE: Only boolean, string, number and UnitValue are supported, use a post processor
    //       to convert (f) other types to one of these forms.
    // REUSE: This routine is used in other scripts. Please update those if you
    //        modify. I am not using include or eval statements as I want these
    //        scripts self contained.
    function descriptorToObject (o, d, s, f) {
        var l = d.count;
        if (l) {
            var keyMessage = app.charIDToTypeID( 'Msge' );
            if ( d.hasKey(keyMessage) && ( s != d.getString(keyMessage) )) return;
        for (var i = 0; i < l; i++ ) {
            var k = d.getKey(i); // i + 1 ?
            var t = d.getType(k);
            strk = app.typeIDToStringID(k);
            switch (t) {
                case DescValueType.BOOLEANTYPE:
                    o[strk] = d.getBoolean(k);
                    break;
                case DescValueType.STRINGTYPE:
                    o[strk] = d.getString(k);
                    break;
                case DescValueType.DOUBLETYPE:
                    o[strk] = d.getDouble(k);
                    break;
                case DescValueType.UNITDOUBLE:
                    var uc = new Object;
                    uc[charIDToTypeID("#Rlt")] = "px"; // unitDistance
                    uc[charIDToTypeID("#Prc")] = "%"; // unitPercent
                    uc[charIDToTypeID("#Pxl")] = "px"; // unitPixels
                    var ut = d.getUnitDoubleType(k);
                    var uv = d.getUnitDoubleValue(k);
                    o[strk] = new UnitValue( uv, uc[ut] );
                    break;
                case DescValueType.INTEGERTYPE:
                case DescValueType.ALIASTYPE:
                case DescValueType.CLASSTYPE:
                case DescValueType.ENUMERATEDTYPE:
                case DescValueType.LISTTYPE:
                case DescValueType.OBJECTTYPE:
                case DescValueType.RAWTYPE:
                case DescValueType.REFERENCETYPE:
                default:
                    throw( new Error("Unsupported type in descriptorToObject " + t ) );
        if (undefined != f) {
            o = f(o);
    // Function: preProcessExportInfo
    // Usage: convert Photoshop enums to strings for storage
    // Input: JavaScript Object of my params for this script
    // Return: JavaScript Object with objects converted for storage
    function preProcessExportInfo(o) {
        o.tiffCompression = o.tiffCompression.toString();
        o.pdfEncoding = o.pdfEncoding.toString();
        o.targaDepth = o.targaDepth.toString();
        o.bmpDepth = o.bmpDepth.toString();
        return o;
    // Function: postProcessExportInfo
    // Usage: convert strings from storage to Photoshop enums
    // Input: JavaScript Object of my params in string form
    // Return: JavaScript Object with objects in enum form
    function postProcessExportInfo(o) {
        o.tiffCompression = eval(o.tiffCompression);
        o.pdfEncoding = eval(o.pdfEncoding);
        o.targaDepth = eval(o.targaDepth);
        o.bmpDepth = eval(o.bmpDepth);
        return o;
    // Function: StrToIntWithDefault
    // Usage: convert a string to a number, first stripping all characters
    // Input: string and a default number
    // Return: a number
    function StrToIntWithDefault( s, n ) {
        var onlyNumbers = /[^0-9]/g;
        var t = s.replace( onlyNumbers, "" );
        t = parseInt( t );
        if ( ! isNaN( t ) ) {
            n = t;
        return n;
    // End X2L.jsx

  • Doing a batch export in LR CC doesn't keep me in same attributes screen

    I just installed LR CC, and I've noticed that there seems to be a quirky little bug when exporting images. I normally like to go through my images, and narrow down to my selects with the star ratings. I'll then have my attributes show only the 3-starred images, for instance. I select just those 3-starred images that I'm now seeing and do a batch export to PSD files. However, once the export starts and once that first PSD file is created, I am automatically kicked back to the library view of ALL of my images, not just the 3-starred rating ones. I just find this to be an inconvenience as I can no longer make attribute selections stick during an export since I'm constantly kicked back to the view of ALL of my images. This happens in any kind of export situation.
    **4/28/15 Edit: it appears as though it's a bug with the "add to this catalog" option that you can check in the export settings. I've been able to export things fine when this is not checked. When it's checked, the export is extremely sluggish to start and then just dumps me back into the view with all my images visible, not just my selected ones.**
    Is there a setting I need to adjust here or is this a LR CC bug?
    Hoping there's some way to fix this.
    Thanks,
    -Kristine

    First: Send Apple a Feedback. This has been an issue since the first days of X and is still not corrected in Tiger, from the posts I see there. Apple needs to know it matters to you. Click on "Discussions" at the top of this page and then look at the bottom left of the list of forums that comes up
    Second: You did send that Feedback, didn't you. In the same corner is the link to the Users' Tips Library. In it—you'll have to do a search—is the tip from Scott Radloff "Making Finder Views Persistant" [title may not be exact] that you want.
    Briefly, Apple's overlay of X onto UNIX broke down here. The 'ownership' of the problem windows belongs to one of those greyed out users like "eppp" and "mysql" that you see under your shortname when you look at Details in a Get Info… window on a file. UNIX needs them, so you need them, but you don't need to defer to their idea of what a perfect window looks like. Not if you're willing to become "root" the superuser and tell them how-to. That's Scott's tip, and do be warned: Rootness is all-powerful, and you must use those powers only for good and immediately renounce them when your task is done.
    Now, what were you going to do first? Good luck.

  • Batch export and chapter markers

    Am I missing something? I can find no way to batch export clips and set the option to export chapter markers. Anyone able to do this?
    Thanks,
    Bob

    That's correct. Batch export uses the QuickTime Conversion module which does not support chapter markers.

Maybe you are looking for