出于某种原因,当我尝试在VB中的shell命令中使用它们时,似乎&符号不能正常工作。当我尝试使用&符号在同一行上将两个命令链接在一起时,我收到错误:“filenotfoundexception未找到未处理的文件”
我试图运行的命令是:
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)
一切正常。 vers 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)
第一个似乎有用,所有后续的都没有。有什么理由不起作用吗?是否有流程刷新或我遗漏的东西?
答案 0 :(得分:5)
删除了我的其他答案,找到了一种更简单的方法。
这就是你想要的......
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)
我测试了第一个例子,它似乎有效。
答案 1 :(得分:3)
您是否考虑过使用Process对象启动ADB并设置了CommandLine选项
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)
答案 2 :(得分:2)
Shell命令需要文件名,因此命令行扩展不起作用。
有几种选择:
1)使用process.start启动cmd.exe并传递参数(我没有对此进行测试,因此我不确定它是否可行。
2)在.cmd或.bat文件中创建命令,然后shell文件(这似乎是最简单的方法)。