Bluekylin's Blog

Think —> Learn —> Done
posts - 95, comments - 674, trackbacks - 3, articles - 25

用好Photoshop快捷批处理

Posted on 2007-10-03 12:36 Bluekylin 阅读(201) 评论(1)  编辑 收藏 所属分类: 3.Workout
psShorcut.jpg
07.11.20 updated
后来发现不需要借助第三方编程工具,因为bat/cmd中命令也是串行执行的,不用另外搞进程监视了,也就是说
bat+photoshop的快捷批处理 就OK了。我用到的bat模式主要是for遍历文件夹和&来连接串行执行的命令:
for %%variable in (set) do command1 & command2 & ...
另外,值得一提的是ImageReady 虽然有后台处理功能,但是它的快捷批处理完成时监视不到,所以不能被灵活运用。至于Photoshop虽然没有后台处理功能,桌面会被霸占,但是有一个变相后台处理的办法,就是切换用户(Win+L),这个用户下在处理图片,换到另外一个用户下去干别的事,电脑配置不能太差哦,呵呵!


最近在工作中碰到一些机械性图片处理的活,我最讨厌干这种浪费生命的事情,于是稍稍研究了一下,结合Photoshop的快捷批处理(调用自定义动作)+VB+CMD实现了一个遍历文件夹处理图片的小工具,把需要干半天的活浓缩在半小时内。其实Photoshop的快捷批处理已经很很人性化了,超强,但是在实际处理中可能会遇到文件命名、存储位置等问题,你给它做点扫尾工作就可以了,我在VB中使用shell调用cmd来执行这个操作。

为了防止Shell并行执行,我加了下面这个doProcess来串行化执行cmd命令。
'For process control
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As LongByVal bInheritHandle As LongByVal dwProcessId As LongAs Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As LongAs Long
    
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As LongByVal dwMilliseconds As LongAs Long

Const SYNCHRONIZE = &H100000
Const INFINITE = &HFFFFFFFF

Private Function doProcess(command As String)
    
Dim pId As Long
    
Dim pHnd As Long
    pId 
= Shell(command)
    pHnd 
= OpenProcess(SYNCHRONIZE, 0, pId)
    
If pHnd <> 0 Then
        
Call WaitForSingleObject(pHnd, INFINITE)
        
'等待,直到程序结束
        Call CloseHandle(pHnd)
    
End If
End Function

之后就可以直接调用doProcess来串行执行Shell,例:
doProcess("cmd /c "+[cmd命令1])
doProcess("cmd /c "+[cmd命令2])

扫尾工作还需要引用Miscrosoft Scripting Runtime(scrrun.dll)来执行文件及文件夹遍历操作,随便哪本VB书里都有这个介绍,不写了。

写完发现,又是一篇文不对题的,嗨!

_____________________________________________________

Feedback

#1楼    回复  引用    

2007-10-04 04:42 by w [未注册用户]
学习了,photoshop窍门很多啊。

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-05-30 10:05 编辑过


相关链接:

历史上的今天:
2006-10-03 奇怪的耳机电流噪音消除方法