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