我正在使用VBA编写命令文件和BAT文件,该文件调用PLink登录服务器并运行脚本。由于这方面的一些帮助,Plink部分现在正在按预期运行。不幸的是,VBA似乎在打开cmd和查找plink作为可用命令时遇到了一些困难。
我尝试了多种不同的方法来调用它,但结果都是一样的。 cmd提示符打开然后立即关闭,给出一个错误说明:
"plink is not recognized as an internal or external command, operable program, or batch file."
文件生成完美,如果我在VBA之外运行bat文件,它会按预期运行。有了这些文件,我在桌面上保留了一份plink.exe。我甚至尝试使用链接和plink.exe将cmd.exe的副本添加到桌面,但是我遇到了同样的问题。
以下是我尝试过的一些方法,虽然针对我的代码进行了修改: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识别为选项,那将非常感激
答案 0 :(得分:0)
将路径传递到批处理文件中的plink.exe,或确保%Path%包含包含plink.exe的文件夹。