有一个 powershell 脚本可以通过 MTP 以编程方式在 PC 和 Android 之间复制文件,请参阅针对 mtp 连接访问文件系统 http://www.pstips.net/access-file-system-against-mtp-connection.html,并且当它在 powershell 控制台下运行时它可以工作,然后我制作了一个脚本,如下所示:
function Usage()
{
echo "Usage:mtpcmd cp srcfile dstfolder"
}
function main
{
param($mainargs)
# echo "args2:$mainargs"
if(-not($mainargs.length -eq 2))
{
Usage
return
}
$srcfile=$mainargs[0]
$dstfolder=$mainargs[1]
$phone = Get-ChildShellItem | where { $_.Path -like '*usb*' }
echo "phonePath:$($phone.Path)"
Copy-ShellItem -Path "$srcfile" -Destination "$($phone.Path)\内部存储$dstfolder"
}
#echo "args1:$args"
main -mainargs $args
这个脚本在 powershell 控制台上运行得很好,但是当我在 cmd 下运行它时,就像
powershell -文件 mtpcp.ps1 c:\test\Android\test\
or
powershell ./mtpcp.ps1 c:\test\Android\test\
它只是什么都不做(没有显示错误)。
然后我使用 system.Shell32 在 .Net 上实现了相同的功能,函数 CopyHere 可以与正则路径一起正常工作,例如c:\
,但不适用于mtp设备路径,就像powershell一样,它只是对CopyHere功能不执行任何操作,也不显示错误消息。
好吧...只需在复制此处后添加一个睡眠或读取密钥,然后它就可以正常工作。
Shell sh = new Shell();
Folder folder = sh.NameSpace(AndroidMTPFiles.GetUsbFolderItem().Path + @"\内部存储\Android\test");
//FolderItem fi = AndroidMTPFiles.GetRegularFileItemByPath(@"c:\test\src");
folder.CopyHere(@"c:\test\src\",16);
sh.Open(folder);
System.Console.ReadKey();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)