首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shell32在.Net和powershell脚本中都不起作用

shell32在.Net和powershell脚本中都不起作用
EN

Stack Overflow用户
提问于 2016-11-23 09:10:06
回答 1查看 521关注 0票数 1

有一个powershell脚本可以以编程方式在pc和android之间通过MTP复制文件,请参阅访问-文件系统-针对-mtp-连接,它在powershell控制台下运行时工作,然后我编写了一个脚本,如下所示:

代码语言:javascript
复制
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函数不做任何操作,也没有显示错误消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 09:56:34

well...just在复制后添加一个睡眠键或读键,然后正常工作。

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40760114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档