2013-04-21 24 views
0

我在下面的內容允許用戶從批量菜單中輸入設備的名稱,然後在新的命令窗口中telnet並自動登錄。在下面的批處理運行後,我希望提示用戶爲一個新的變量(主機)。一旦用戶輸入新變量(主機),我希望批處理繼續,在同一窗口中,並ping新變量(主機)。調用一個新的批處理文件或添加VB腳本?

我試過呼叫命令,但是它會打開一個新窗口,每次我嘗試它。我需要一個VBScript嗎?我有點失落。

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

我想接下來的例子。我不知道如何將下面的代碼添加到上面的批處理腳本中,並使它們在「start putty.exe -ssh xxxxxx @%computer%-pw xxxxxx」打開的窗口中執行,我希望%computer%成爲一個新的變量,不是從上述批次的變量。

set /p computer=HOST: 
ping %computer% 
+0

如果我正確理解你,你想閱讀用戶輸入。 [這個問題](http://stackoverflow.com/questions/7879791/how-to-read-input-from-console-in-a-batch-file)似乎有一個答案(反過來鏈接到另一個類似的問題)。 – rath 2013-04-21 15:50:53

+0

不完全。我加了一點我想要完成的。對不起,我不是很清楚,但這對我來說是新的。謝謝! – 2013-04-21 15:59:24

回答

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

希望這有助於!

相關問題