有一个powershell脚本可以通过MTP以编程方式在pc和android之间复制文件,请参阅access-file-system-against-mtp-connection,它在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\
或者
powershell ./mtpcp.ps1 c:\test\Android\test\
它什么也不做(没有显示错误)。
然后我使用 system.Shell32 在 .Net 上实现了相同的功能,CopyHere 功能适用于常规路径c:\
,但不适用于 mtp 设备路径,就像 powershell 一样,它在 CopyHere 功能上什么也不做,也没有错误消息出现。