2017-08-03 111 views
1

我想写一个VBA宏,它将使用PuTTY和执行命令进行登录。下面的代码已被使用。如何使用来自VBA宏的PuTTY调用并执行一个shell脚本

Sub open_putty() 
    Dim UserName 'assign user name 
    Dim Passwrd 'assign password 
    Dim TaskID As Long 
    UserName = "user name" 
    Passwrd = "password" 
    pc1 = "C:\Program Files (x86)\PuTTY/putty.exe -ssh " & UserName & "@ip address -pw " & Passwrd 
    pc2 = "putty.exe -m ""C:\Temp\emu.sh""" 
    TaskID = Shell(pc1, 1) 
    TaskID = Shell(pc2, 1) 

End Sub 

脚本抛出一个错误说

'运行时错误 '53' - 找不到文件'。

请大家帮忙。

回答

0

与空格的文件路径需要被引用:

Sub open_putty() 
    Dim UserName 'assign user name 
    Dim Passwrd 'assign password 
    Dim TaskID As Long 
    UserName = "user name" 
    Passwrd = "password" 
    pc1 = """C:\Program Files (x86)\PuTTY\putty.exe"" -ssh " & _ 
      UserName & "@ip address -pw " & Passwrd 
    pc2 = "putty.exe -m ""C:\Temp\emu.sh""" 
    TaskID = Shell(pc1, 1) 
    TaskID = Shell(pc2, 1) 

End Sub 
2
  • 你必须的路径引用到腻子,因为它包含空格。

  • 你也执行了两次putty.exe。相反,你必须对所有这些参数传递给单个实例putty.exe

pc1 = """C:\Program Files (x86)\PuTTY\putty.exe"" " & _ 
    "-ssh " & UserName & "@ip address -pw " & Passwrd & " -m ""C:\Temp\emu.sh""" 
TaskID = Shell(pc1, 1) 

,你应该考虑使用plink.exe代替putty.exe,什么是腻子工具旨在自动化。 PuTTY是用于交互式使用的GUI应用程序。