[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 CrLf 于 2014-7-6 04:14 编辑

如果只是文件名那好办,不用 clip.exe 的办法是:
(以 powershell -sta 启动后)
  1. Add-Type -Assembly PresentationCore
  2. $a='a.txt','b.txt','c.txt'
  3. [Windows.Clipboard]::SetText($a -join "`n")
复制代码
复制文件可以这样:
  1. $filelist = 'c:\a.txt','d:\b.txt'
  2. $col = New-Object Collections.Specialized.StringCollection
  3. foreach($file in $filelist){$col.add($file)}
  4. [Windows.Clipboard]::setfiledroplist($col)
复制代码
----------------------------------------------------------------
不过这种事其实用 ahk 更合适,复制文件名:
  1. Clipboard:= "c:\a.txt`r`nd:\b.txt"
复制代码
复制文件:
  1. FileAppend, %ClipboardAll%, c:\a.txt
  2. FileAppend, %ClipboardAll%, d:\b.txt
复制代码

TOP

回复 6# 523066680


    噗...我看手册复制偏了...
忽然发现 ahk 好像没法直接复制文件,请教了一下 tmplinshi 大师,得到了一大坨代码:
  1. #NoEnv
  2. #SingleInstance Force
  3. SetWorkingDir %A_ScriptDir%
  4. SetBatchLines -1
  5. fileList := "
  6. (LTrim
  7. js.txt
  8. e:\我的文档\桌面\vcode\18.jpg
  9. )"
  10. FileToClipboard(fileList)
  11. FileToClipboard(PathToCopy, Method="copy")
  12. {
  13. ; 展开为完整路径
  14. Loop, Parse, PathToCopy, `n, `r
  15. Loop, %A_LoopField%
  16. PathToCopy_Full .= "`n" A_LoopFileLongPath
  17. PathToCopy := Trim(PathToCopy_Full, "`n")
  18. FileCount:=0
  19. PathLength:=0
  20. ; Count files and total string length
  21. Loop,Parse,PathToCopy,`n,`r
  22. {
  23. FileCount++
  24. PathLength += StrLen(A_LoopField)
  25. }
  26. pid:=DllCall("GetCurrentProcessId","uint")
  27. hwnd:=WinExist("ahk_pid " . pid)
  28. ; 0x42 = GMEM_MOVEABLE(0x2) | GMEM_ZEROINIT(0x40)
  29. hPath := DllCall("GlobalAlloc","uint",0x42,"uint",20 + (PathLength + FileCount + 1) * 2,"UPtr")
  30. pPath := DllCall("GlobalLock","UPtr",hPath)
  31. NumPut(20,pPath+0),pPath += 16 ; DROPFILES.pFiles = offset of file list
  32. NumPut(1,pPath+0),pPath += 4 ; fWide = 0 -->ANSI,fWide = 1 -->Unicode
  33. Offset:=0
  34. Loop,Parse,PathToCopy,`n,`r ; Rows are delimited by linefeeds (`r`n).
  35. offset += StrPut(A_LoopField,pPath+offset,StrLen(A_LoopField)+1,"UTF-16") * 2
  36. DllCall("GlobalUnlock","UPtr",hPath)
  37. DllCall("OpenClipboard","UPtr",hwnd)
  38. DllCall("EmptyClipboard")
  39. DllCall("SetClipboardData","uint",0xF,"UPtr",hPath) ; 0xF = CF_HDROP
  40. ; Write Preferred DropEffect structure to clipboard to switch between copy/cut operations
  41. ; 0x42 = GMEM_MOVEABLE(0x2) | GMEM_ZEROINIT(0x40)
  42. mem := DllCall("GlobalAlloc","uint",0x42,"uint",4,"UPtr")
  43. str := DllCall("GlobalLock","UPtr",mem)
  44. if (Method="copy")
  45. DllCall("RtlFillMemory","UPtr",str,"uint",1,"UChar",0x05)
  46. else if (Method="cut")
  47. DllCall("RtlFillMemory","UPtr",str,"uint",1,"UChar",0x02)
  48. else
  49. {
  50. DllCall("CloseClipboard")
  51. return
  52. }
  53. DllCall("GlobalUnlock","UPtr",mem)
  54. cfFormat := DllCall("RegisterClipboardFormat","Str","Preferred DropEffect")
  55. DllCall("SetClipboardData","uint",cfFormat,"UPtr",mem)
  56. DllCall("CloseClipboard")
  57. return
  58. }
复制代码

TOP

回复 6# 523066680


    ahk 比 nircmd 强大太多了好吧

TOP

返回列表