如何在VBA中将参数传递给Plink

时间:2014-05-01 09:57:25

标签: vba batch-file outlook putty plink

我在命令提示符下尝试以下字符串在我的服务器上执行一些(测试)远程命令:

plink.exe -ssh -pw [PASSWD] [U/NAME]@[SERVER] -m cmds.bat -v

在我的cmds.bat文件中,我有一些测试命令:

sleep 3
@echo off
ls -la ~/
@echo on
sleep 1

我现在想要在传递参数的同时运行远程脚本。该参数将由我的VBA代码处理和追加。这是我坚持的部分。请注意,以下VBA代码只是一个片段;调用Plink的部分。周围的代码,我很满意:

If re.Test(Msg.Subject) Then
    Set matchCol = re.Execute(Msg.Subject)
    For Each match In matchCol
        shellStr = "plink.exe -ssh [USERNAME]@[SERVER] -pw [P/WORD] -m cmds.bat " & match
        Shell(shellStr, vbNormalFocus)
    Next
End If 

违规行是:

shellStr = "plink.exe -ssh [USERNAME]@[SERVER] -pw [P/WORD] -m cmds.bat " & match

我不知道如何将变量match中保存的值(由Regexp捕获)附加到打开shell时要执行的字符串。

bat文件将处理在远程Unix服务器上实际运行脚本的命令,而不是上面示例中的ls -la ~/我将使用:

python ~/myscript.py [ARGUMENT FROM VBA VARIABLE "match"]

但是如何将此match变量的值传递给它?

1 个答案:

答案 0 :(得分:0)

你不能这样做; plink只是不支持这种用法。您最好的选择是按照您在评论中的建议进行操作:动态构建脚本。 (也许不要把它称为.bat,这似乎有点误导......)