我正在编写一个批处理文件来自动运行一些EXE并退出控制台中的消息
"Press any key to continue .. "
批处理文件包含以下代码:
D:\\Tethys\\SVN\\build\\vs2010\\ReleaseWin32\\bin\\TethysDatabaseUtility.exe install D:\Tethys\DatabaseInstaller\DatabaseInstaller\RGTestingUtility.cab "" NDI-LAP-262\SQL2008R2 TestDB-Neeraj N sa Brick@123 /c h:
D:\\Tethys\\SVN\\build\\vs2010\\ReleaseWin32\\bin\\TethysDatabaseUtility.exe install D:\Tethys\DatabaseInstaller\DatabaseInstaller\RGTestingUtilityTestCases.cab "" NDI-LAP-262\SQL2008R2 TestDB-Neeraj N sa Brick@123
D:\\Tethys\\SVN\\build\\vs2010\\ReleaseWin32\\bin\\TethysDatabaseUtility.exe install D:\Tethys\DatabaseInstaller\DatabaseInstaller\RGTestingUtilityBaseLineData.cab "" NDI-LAP-262\SQL2008R2 TestDB-Neeraj N sa Brick@123
在bat文件中使用的exe是控制台应用程序和代码编写
installer.run();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
以上代码是必需的,所以我不更改代码,因为该控制台exe也调用了其他一些应用程序。
请帮助退出安装程序。
添加echo(|
我在console
收到了以下错误。
答案 0 :(得分:0)
您可以使用后台作业执行此操作(假设您使用的是V2或更高版本)。诀窍是使用Windows窗体SendKeys.SendWait()
方法模拟正在等待按键的PowerShell窗口上的按键。您必须使用延迟,或者您可以修改作业脚本以检查指示安装程序已完成的内容。这是代码:
Start-Job {param($id) Add-Type -Assembly System.Windows.Forms
$hwnd = (Get-Process -id $id).MainWindowHandle
Start-Sleep -Seconds 10
Set-ForegroundWindow $hwnd
[Windows.Forms.SendKeys]::SendWait('{ENTER}')
} -ArgumentList $pid > $null
我用我编写的一个简单的控制台应用测试了这个。 BTW这使用来自PSCX(PowerShell社区扩展 - http://pscx.codeplex.com)的命令,称为Set-ForegroundWindow。如果您不想依赖PSCX,那么实现非常简单。