【问题标题】:Shell commands in VBVB中的Shell命令
【发布时间】:2012-01-31 12:45:57
【问题描述】:

由于某种原因,当我尝试在 VB 的 shell 命令中使用与号时,它们似乎无法正常工作。当我尝试使用&符号将两个命令链接到同一行时,我收到错误消息:“filenotfoundexception is unhandled file not found”

我要运行的命令是:

 Shell("cd " & TextBox2.Text.ToString & " & adb -s " & TextBox15.Text.ToString & " shell monkey -p " & TextBox1.Text.ToString & " -v 1", AppWinStyle.Hide) 

我尝试将其分解为更简单的形式,但我仍然收到错误:

 Shell("cd C:\ & adb shell monkey -p com.android.system -v 1", AppWinStyle.Hide)

如果我去掉 & 符号并使用:

 shell(adb shell monkey -p com.android.system -v 1", AppWinStyle.Hide)

一切正常。在 vb shell 命令中没有 & 符号吗?


*我的编辑

其实我还是有问题。所以我有的是:

    psi.WorkingDirectory = TextBox2.Text.ToString
    psi.FileName = "adb"
    psi.WindowStyle = ProcessWindowStyle.Hidden

然后我有一点代码,然后我分配一个参数并执行该参数:

    psi.Arguments = "-s " & TextBox15.Text.ToString & " shell monkey -p " & TextBox1.Text.ToString & " -v  1"
    Process.Start(psi)

然后我有一点代码,然后我尝试使用不同的参数再次运行该过程:

    psi.Arguments = "-s " & TextBox15.Text.ToString & " shell input keyevent 3"
    Process.Start(psi)

第一个似乎工作,所有后续的都没有。有什么理由不应该工作吗?是否有流程刷新或我缺少的东西?

【问题讨论】:

    标签: vb.net visual-studio visual-studio-2010


    【解决方案1】:

    删除了我的其他答案,找到了一种更简单的方法。

    这就是你想要的……

    Shell("cmd.exe /c cd C:\ & adb shell monkey -p com.android.system -v 1", AppWinStyle.Hide)
    

    将其插入到您的原始代码中...

    Shell("cmd.exe /c cd " & TextBox2.Text.ToString & " & adb -s " & TextBox15.Text.ToString & " shell monkey -p " & TextBox1.Text.ToString & " -v 1", AppWinStyle.Hide) 
    

    我测试了第一个示例,它似乎可以工作。

    【讨论】:

      【解决方案2】:

      您是否考虑过使用 Process 对象来启动 ADB 并设置命令行选项

      Dim psi As New ProcessStartInfo
      
      psi.WorkingDirectory = "c:\"
      psi.Arguments = "shell monkey -p com.android.system -v 1"
      psi.FileName = "ADB"
      psi.WindowStyle = ProcessWindowStyle.Hidden
      return Process.Start(psi)
      

      如果您的 ADB 程序只允许单个实例运行,您可能需要添加以下内容

      Dim ps As Process = Process.Start(psi)
      ps.WaitForExit()
      
      psi.Arguments = 'new arguments
      Process.Start(psi)
      

      【讨论】:

      • 实际上,你能看看我上面发布的编辑。我还是有一些问题
      • @Nefarii 也许您的 ADB 只允许单个实例运行,如果您不等待,后续实例将打开并立即关闭。请参阅编辑
      【解决方案3】:

      Shell 命令需要一个文件名,因此命令行扩展不起作用。

      有几个选项:

      1) 用 process.start 启动 cmd.exe 并传递参数(我没有测试过,所以不确定它是否可以工作。

      2) 在 .cmd 或 .bat 文件中创建您的命令,然后对该文件进行外壳处理(这似乎是最简单的方法)。

      【讨论】:

      • 是的,这是我尝试的第一件事。它很奇怪,'&' 和 '&&' 都可以在 cmd.exe 中工作,并且从 Microsoft 网站上它说它应该在 shell 中工作。但是当我在 VS2010 中尝试任何一个时,我都会收到错误消息。
      • 在此之前我正在运行一个批处理文件。为每个需要运行的命令不断创建和删除一个唯一的批处理文件似乎很费力......请查看 process.start
      猜你喜欢
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多