Я использую VBA для написания командного файла и файла BAT, который вызывает PLink для входа на сервер и запуска сценария. Часть Plink теперь работает, как и ожидалось, благодаря некоторой помощи здесь. К сожалению, VBA, похоже, испытывает некоторые трудности с открытием cmd и поиском plink в качестве пригодной для использования команды.
Я пробовал несколько разных способов вызвать его, но результаты все те же. Приглашение cmd открывается, а затем сразу же закрывается, выдавая мне сообщение об ошибке:
"plink is not recognized as an internal or external command, operable program, or batch file."
Файлы генерируются отлично, и если я запускаю файл bat вне VBA, он работает, как и ожидалось. Вместе с файлами я храню копию plink.exe на рабочем столе. Я даже пытался добавить копию cmd.exe на рабочий стол со ссылками и plink.exe, но у меня та же проблема.
Вот некоторые из способов, которые я пробовал, хотя и были изменены для моего кода: is-not-working">1 2 3
Вот самый последний код макроса:
Dim vPath As String
Dim vscript As String
UserID = Range("F1").Value
Passwd = Range("F2").Value
Server = Range("F3").Value
StartDate = Range("F4").Value
EndDate = Range("F5").Value
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\Program Files (x86)\PuTTY\plink.exe", "C:\Users\MikeDesktop\"
'fso.CopyFile "C:\Windows\System32\cmd.exe", "C:\Users\Mike\Desktop\"
vPath = "C:\Users\Mike\Desktop"
Open vPath & "\pcmd.txt " For Output As #1
Print #1, "cd /opt/test/srt"
Print #1, "./srt.tool " & StartDate & " " & EndDate & " > /opt/test/srt/test.txt &"
Print #1, "rm test.txt"
Print #1, "sleep 60; exit"
Close #1
Open vPath & "\Chg.bat" For Output As #1
Print #1, "plink " & UserID & "@" & Server & " -pw " & Passwd & " < " & vPath & "\pcmd.txt"
Close #1
vscript = vPath & "\Chg.bat"
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 5
wsh.Run vscript, windowStyle, waitOnReturn
Application.Wait (Now + TimeValue("0:01:00"))
Kill vPath & "\Chg.bat"
Kill vPath & "\pcmd.txt"
Kill vPath & "\plink.exe"
Если кто-то может сказать мне, почему cmd не распознает plink как вариант, я был бы очень признателен.
plink
вместо того, чтобы полагаться на то, что он находится на%Path%
? - person FreeMan   schedule 06.05.2015