2016-12-07 113 views
1

我试图从VBA运行shell命令并获取输出到csv文件。下面是我使用的代码:使用VBA运行并保存命令输出

Dim wsh as Object 
Set wsh = VBA.CreateObject("WScript.Shell") 
plink_path="C:\plink.exe" 
key_path="putty key path" 
pass_query="select * from test" 
command1 = Replace(plink_path & " [email protected] -i " & key_path & " mysql -uuser -ppass -e 'use radar;" & pass_query & "'", Chr(10), " ") 
wsh.Run command1 & ">E:/anurag.csv", 0, True 

但我无法查看E驱动器中的输出文件。当我从cmd提示符手动运行上述命令时,我确实在E驱动器中获得了输出。

+1

如果将输出发送到STDOUT,[这样的事情可能](https://msdn.microsoft.com/en-us/library/cbxxzwb5(V = vs.84).aspx)有用。 – Comintern

回答

1

两个想法:

  1. 尝试的E:\anurag.csv代替E:/anurag.csv
  2. 使用cmd调用plink,因为cmd通常处理重定向。与更换wsh.Run行:

    command1 = command1 & ">E:\anurag.csv" 
    command1 = "cmd /c """ & command1 & """" 
    wsh.Run command1, 0, True 
    

    第一行完成你想要执行的命令和第二把它包装在cmd /c通话。

    • 如果这不起作用,尝试以上/c /sthis answer改变/c

YMMV - 未测试

+0

当我使用command1 =“cmd/c”“”&command1&“”“”时,它完美运行。 – anurag

相关问题