群里有朋友想自动从数码相机拷贝图片到电脑硬盘里,细心的朋友会发现数码相机没有盘符路径。是否真没办法了呢?小弟发现可以考虑从COM中的Shell.Application下手解决这个问题:
下面是本人测试语法,要完全自动还需要大量的逻辑判断,这里就不详细写逻辑语句了,这里只提供大概的思路给大家,下面本人实现了复制整个数码相机到D盘的实例:
#获取我的电脑: $computer = $shell.NameSpace(17) #检索我的电脑内所有元素,如磁盘、光盘、数码相机 $items = $computer.Items() #发现相机元素排在第1位,所以本人直接加载第一个设备 $xiangji = $items.Item(0) #进一步发现磁盘内还有目录 $storagemedia = $xiangji.GetFolder.Items() #再进一步 $storag = $storagemedia.Item(0) #得到里面所有文件 $files = $storag.GetFolder.Items() #复制到到其它盘符 $shell.NameSpace("E:\D").copyhere($files,16)
至此功能上我们成功完成了一次数码相机拷贝相片的动作,但如何实现完全自动化还需要复杂的逻辑判断,因为时间关系小弟就不能在为大家细细写了。希望对各位有用!
本文链接: https://www.pstips.net/getpictureformxiangji.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
帅气
漂亮
我之前简单尝试过这种思路,不过我是直接给NameSpace传递相机路径,发现不支持这种路径,后来作罢.通过枚举来获得这种特殊路径倒是一个思路
$DCIMPath=”::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\?usb#vid_04b0&pid_0412#000006070857#{6ac27878-a6fa-4155-ba85-f98f491d4f33}SID-{10001,,7813988352}{24004000-0000-0000-0000-000000000000}{24194000-0000-0000-0000-000000000000}”$shell = New-Object -ComObject Shell.Application$DCIMFolder = $shell.NameSpace($DCIMPath)$shell.NameSpace(“e:1”).CopyHere($DCIMFolder)整理了下,我的nikon相机可以直接如此,主要是找到了相片的路径路径的获得可以通过主贴 $storag.path 得到
不错不错。
原来那个稀奇古怪的路径可以放在 $shell.NameSpace中使用。再次感谢小楼和codecook。这就是交流学习的力量。
数码相机手机都有2种方法,1usb调试,2usb-store。再说还有存储卡方法,那家伙非要用usb调试方法复制数据。烦。
正解。我连接手机的时候,会提示可以选择mtp,和存储卡等方式,如果选择存储卡就会有盘符,一切都好商量。
广播: PowerShell访问便携式媒体设备(MTP)文件系统 | PowerShell 中文博客