有一个powershell脚本可以以编程方式在pc和android之间通过MTP复制文件,请参阅访问-文件系统-针对-mtp-连接,它在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 -Files mtpcp.ps1 c:\test \Android\test
或
powershell ./mtpcp.ps1c:\test \Android\test\
它只是什么也不做(没有显示错误)。
然后我在.Net上使用system.Shell32实现了相同的函数,CopyHere函数可以很好地与正则路径(如c:\ )一起工作,但是不能处理mtp设备路径,就像powershell一样,它只是对CopyHere函数不做任何操作,也没有显示错误消息。
发布于 2016-11-23 09:56:34
well...just在复制后添加一个睡眠键或读键,然后正常工作。
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();https://stackoverflow.com/questions/40760114
复制相似问题