2017-08-16 74 views
0

我已经创建了一个批处理文件,通过它我试图创建一个.vbs文件并在其中放置一些命令。但我无法将我的所有命令转移到.vbs文件。批处理命令和VB脚本命令在一个文件中

@echo off 
echo: 
set /a i=1 
:Loop 
if %i% GTR 0 (

rem create temp vbs file  
    echo Dim IPAddress > temp.vbs 
    echo IPAddress="192.168.1.109" >> temp.vbs 
    echo SET WshShell = WScript.CreateObject("WScript.Shell"^) >> temp.vbs 
    echo WshShell.run("telnet.exe " &IPAddress) >> temp.vbs 
    echo WScript.Sleep 3000 >> temp.vbs 
    echo WshShell.SendKeys"qwert" >> temp.vbs 
    echo WshShell.SendKeys("{Enter}") >> temp.vbs 
    echo WScript.Sleep 3000 >> temp.vbs 
    echo WshShell.SendKeys"asdf123" >> temp.vbs 
    echo WshShell.SendKeys("{Enter}") >> temp.vbs 
    echo WScript.Sleep 1000 >> temp.vbs 

    echo ' Reboot Device >> temp.vbs 
    echo ' WshShell.SendKeys"reboot" >> temp.vbs 
    echo ' WshShell.SendKeys("{Enter}") >> temp.vbs 
    echo ' WScript.Sleep 1000 >> temp.vbs 
    echo strPath = WshShell.CurrentDirectory >> temp.vbs 

    echo ' Close telnet session >> temp.vbs 
    echo WshShell.Run "taskkill /im telnet.exe", , True >> temp.vbs 
    rem wscript C:\Users\guest\Desktop\temp.vbs 
    echo Reboot Count %i% 
    echo: 
    set /a i+=1 
    Timeout /t 90 >nul 
    GOTO Loop 
    ) ELSE (
    echo Out of if loop 
    ) 

以下是temp.vbs的实际输出文件

WshShell.run("telnet.exe " 
WScript.Sleep 3000 
WshShell.SendKeys"qwert" 
WshShell.SendKeys("{Enter}") 
WScript.Sleep 3000 
WshShell.SendKeys"asdf123" 
WshShell.SendKeys("{Enter}") 
WScript.Sleep 1000 
' Reboot Device 
' WshShell.SendKeys"reboot" 
' WshShell.SendKeys("{Enter}") 
' WScript.Sleep 1000 
strPath = WshShell.CurrentDirectory 
' Close telnet session 
WshShell.Run "taskkill /im telnet.exe", , True 

temp.vbs的预期输出文件

Dim IPAddress 
IPAddress="192.168.1.109" 
SET WshShell = WScript.CreateObject("WScript.Shell"^) 
WshShell.run("telnet.exe " &IPAddress) 
WScript.Sleep 3000 
WshShell.SendKeys"qwert" 
WshShell.SendKeys("{Enter}") 
WScript.Sleep 3000 
WshShell.SendKeys"asdf123" 
WshShell.SendKeys("{Enter}") 
WScript.Sleep 1000 

' Reboot Device 
' WshShell.SendKeys"reboot" 
' WshShell.SendKeys("{Enter}") 
' WScript.Sleep 1000 
strPath = WshShell.CurrentDirectory 

' Close telnet session 
WshShell.Run "taskkill /im telnet.exe", , True 

请帮我在这实现了这种情况。

非常感谢您提前。

+4

你必须在'echo'语句中隐藏所有的圆括号。这样说:不要使用SendKeys来编写telnet脚本。使用一个'telnet'命令,它实际上是脚本化的(如[PuTTY suite]中的['plink'](https://the.earth.li/~sgtatham/putty/0.70/htmldoc/Chapter7.html#plink) ://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html))。 –

+4

有[更多优雅的方式](https://stackoverflow.com/a/9074483/1683264)做一个批+ VBScript混合。 (以及[更多示例](https://stackoverflow.com/search?q=user%3A1683264+batch+vbscript+wsf)。) – rojo

+2

请停止宣传Frankenscripts。他们可能在智力上有一定的魅力,但他们在生产中维持和排除故障是一种痛苦。 –

回答

0

您可以使用命令创建.vbs脚本,以便在同一文件夹中运行并隐藏它。接下来你可以从批处理文件中运行它。