0

我在下面的内容允许用户从批处理菜单中输入设备的名称,然后它将在新的命令窗口中远程登录并自动登录。在下面的批处理运行后,我希望用户被提示输入新变量(主机)。一旦用户输入新变量(主机),我希望批处理在同一窗口内继续,并 ping 新变量(主机)。

我尝试了 call 命令,但无论我尝试哪种方式,它都会打开一个新窗口。我需要一个 vbscript 吗?我有点失落。

@echo off
:A
color 0A
Cls
echo.
echo.
echo.
echo Putty SSH
echo.
echo.
echo.
set /p computer=HOST:
start putty.exe -ssh xxxxxx@%computer% -pw xxxxxx
goto:options

我接下来要介绍的示例。我不知道如何将下面的行添加到上面的批处理脚本中,并使其在“start putty.exe -ssh xxxxxx@%computer% -pw xxxxxx”打开的窗口中执行。我希望 %computer% 是一个新的变量。不是来自上述批次中的变量。

"

set /p computer=HOST:
ping %computer%
4

1 回答 1

1

可悲的是,没有办法从批处理文件中做到这一点。一旦您从批处理中“调用命令”,它就会被视为独立于您之前执行或稍后执行的其余批处理调用的东西。

我建议即使在第一次使用时也创建一个 vbs 文件,并将其用于您想要的所有操作。

这是一个小示例代码,供您查看如何“管理”您从 vbs 启动的命令窗口:

Option Explicit

Dim oShell

Set oShell = CreateObject("WScript.Shell") 
REM 1 == windowstate normal, false==don't wait for app to finish running
Call oShell.Run ("cmd /K CD C:\", 1, false)
Call WScript.Sleep (300)

REM you don't need it right after cmd.exe started up as it'll be
REM focused/activated by OS but may need later
REM Call oShell.AppActivate ("cmd.exe")

Call oShell.SendKeys ("echo yay! {ENTER}")

SET oShell = Nothing

您可以找到可以与“SendKeys”功能一起使用的命令列表:http: //msdn.microsoft.com/en-us/library/8c6yea83%28v=vs.84%29.aspx

希望这可以帮助!

于 2013-04-21T16:34:52.760 回答