Windows 命令行将输入(2 个字符串)传递给 Exe

Windows 命令行将输入(2 个字符串)传递给 Exe

我有一个实用程序 (myprog.exe),需要登录密码才能运行。它有一个用于 ID 和密码的 .ini 文件,但由于某种原因,它不会使用我输入到 ini 文件中的值(我认为它应该自动更新 ini 文件,但事实并非如此),所以我想想出一个解决方法。

如果从 .bat 文件运行

echo <USER ID> | myappp.exe

这正确地将 ID 号传递给程序,并前进到 PW 输入。如果我输入 PW 并按 [Enter],程序将正常工作(图像是从批处理文件运行上述命令的输出)。我要做的所有事情就是将这个 PW 的键盘输入传递给程序。我尝试了几种不同的语法形式来执行第二个 echo 命令,但它们不起作用,或者以某种方式挂起了程序。

我没有编写该实用程序,作者无法提供进一步的帮助。

dos 输出

编辑批处理文件并添加第二个 echo 命令

echo <password> | myappp.exe

以任何语法形式,或尝试在第一个 echo 命令后调用第二个批处理文件

echo <USER ID> | myappp.exe
call 2ndinput.bat

所有的尝试都得到了相同的结果:

第二个输入字符串结果

答案1

仅当命令提示键盘输入时,管道输入命令才有效。(即使这样也并非总是如此,例如它对“runas”命令不起作用)

不过,您可以使用 vbscript(与 win7 捆绑在一起)及其 sendkeys 函数。(不过请记住,它有点受限,因为它不支持 unicodehttps://stackoverflow.com/questions/3198574/does-or-can-vbscripts-sendkeys-support-unicode)但这个限制不会影响你。注意,C# 的 sendkeys 支持 unicode。

废话

Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objArgs = Wscript.Arguments
dim a, b
arg1 = objArgs(0)
arg2 = objArgs(1)
WshShell.SendKeys "blahprogram " + arg1 + "{Enter}" + arg2 + "{Enter}"

因此如果你运行 blah.vbs abc def

它将运行 C:\>blahprogram abc<ENTER>def<ENTER>

你可以将 sendkeys 行

WshShell.SendKeys "blahprogram" + "{Enter}" + "123" + "{Enter}"

那么它将

C:\>blahprogram<ENTER>123<ENTER>

如果你想跑

C:\>echo.| blahprogram<ENTER>123<ENTER>

您可以使用

WshShell.SendKeys "echo.|blahprogram" + "{Enter}" + "123" + "{Enter}"

所以你的整个程序将是

Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objArgs = Wscript.Arguments
WshShell.SendKeys "echo.|blahprogram" + "{Enter}" + "123" + "{Enter}"

相关内容