プログラムで MTP を介して PC と Android の間でファイルをコピーするための 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.ps1 c:\test\Android\test\
何もしません(エラーは表示されません)。
次に、system.Shell32を使用して.Netに同じ関数を実装しました.CopyHere関数は通常のパスのように正常に動作しますが、powershellのようc:\
にmtpデバイスパスでは動作しません.CopyHere関数では何もしません.エラーメッセージもありません.現れた。