2013-04-11 1 views
2

Используя Adobe PhotoShop CS4 scripting, JavaScript предоставляет классы File и Folder, но я не вижу, как я могу использовать эти классы из VBScript.Как ссылаться на объект Photoshop Folder в VBScript

В настоящее время я использую DoJavaScript функцию:

Set appRef = CreateObject("Photoshop.Application") 
jsCode = Array(_ 
    "var inFolder = Folder.selectDialog('Select a folder to process');",_ 
    "if(inFolder != null){",_ 
    " var fileList = inFolder.getFiles(/\.(jpg|jpeg|tif|)$/i);",_ 
    " var outFolder = new Folder(decodeURI(inFolder) + '/Edited');",_ 
    " if (outFolder.exists == false) outFolder.create();",_ 
    " for(var i = 0 ;i < fileList.length; i++){",_ 
    " var doc = open(fileList[i]);",_ 
    " doc.flatten();",_ 
    " var docName = fileList[i].name.slice(0,-4);",_ 
    " var saveFile = new File(decodeURI(outFolder) + '/' + docName + '.png');",_ 
    " SavePNG(saveFile);",_ 
    " activeDocument.close(SaveOptions.DONOTSAVECHANGES);",_ 
    " }",_ 
    "}",_ 
    "function SavePNG(saveFile){",_ 
    " pngSaveOptions = new PNGSaveOptions();",_ 
    " pngSaveOptions.embedColorProfile = true;",_ 
    " pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;",_ 
    " pngSaveOptions.matte = MatteType.NONE;",_ 
    " pngSaveOptions.quality = 1;",_ 
    " pngSaveOptions.PNG8 = false;",_ 
    " pngSaveOptions.transparency = true;",_ 
    " activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE);",_ 
    "}") 
appRef.DoJavaScript(Join(jsCode, vbNewLine)) 

Мой вопрос: Могу ли я использовать Folder и File классы непосредственно из моего VB сценария? Что-то вроде:

Set psFolder = appRef.Folder 
inputFolder = psFolder.selectDialog("Select a folder to process") 

Когда я пытаюсь это, appRef.Folder возвращает эту ошибку:

Object doesn't support this property or method

+0

Быстрый вопрос: ** Adobe Photoshop CS5 ** библиотека, которую вы используете? – s0d4pop

+0

Я хочу убедиться, что я смотрю на правильную библиотеку, прежде чем комментировать неправильно. – s0d4pop

+0

Спасибо, что спросил, я забыл сказать это, 'CS4'. – seeker

ответ

0

В VBScript, вы можете получить доступ к папке с FileSystemObject:

'1.a - user browse for folder 
Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.BrowseForFolder(0, "Select Folder", 0, myStartFolder) 
'1.b - or use a fixed one 
sFolder = "C:\foo\anyFolder\" 
Set fs = CreateObject("Scripting.FileSystemObject") 
Set objFolder = fs.GetFolder(sFolder) 

'parse the content of the folder 
Set oChildren = objFolder.SubFolders 
ReDim aList(oChildren.Count) 
For i = 1 To oChildren.Count 
    aList(i) = oChildren.Item(i).Name 
Next 
Смежные вопросы