1
有一个PowerShell脚本通过编程方式通过MTP在PC和Android之间复制文件,请参阅access-file-system-against-mtp-connection,它在PowerShell控制台下运行时工作,然后我创建了一个脚本作为如下:shell32 copyhere在.Net和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:\测试\ Android的\测试\
或
PowerShell的./mtpcp.ps1 C:\测试\ Android的\测试\
它只是什么也不做(没有显示错误)。
然后我使用system.Shell32实现了.Net上的相同函数,函数CopyHere可以正常工作,像c:\
这样的regulare路径,但不能用于mtp设备路径,就像powershell一样,它只是对CopyHere函数不做任何操作,既不显示错误消息。
导致复制线程在您的进程上工作,所以你必须等到复制线程完成。 – coder