运行 并使用 VBA 保存命令输出
Running and saving command output using VBA
我正在尝试 运行 shell 来自 VBA 的命令并将输出输出到 csv 文件中。下面是我使用的代码:
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 & " hadoop@11.11.11.11 -i " & key_path & " mysql -uuser -ppass -e 'use radar;" & pass_query & "'", Chr(10), " ")
wsh.Run command1 & ">E:/anurag.csv", 0, True
但是我无法查看E盘中的输出文件。当我 运行 从 cmd
提示手动执行上述命令时,我确实在 E 驱动器中得到了输出。
两个想法:
- 尝试
E:\anurag.csv
而不是 E:/anurag.csv
使用 cmd
调用 plink
,因为 cmd
通常处理重定向。将 wsh.Run
行替换为:
command1 = command1 & ">E:\anurag.csv"
command1 = "cmd /c """ & command1 & """"
wsh.Run command1, 0, True
第一行完成您要执行的命令,第二行将其包装在 cmd /c
调用中。
- 如果这不起作用,请尝试将上面的
/c
更改为 /c /s
每 this answer.
YMMV - 未测试
我正在尝试 运行 shell 来自 VBA 的命令并将输出输出到 csv 文件中。下面是我使用的代码:
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 & " hadoop@11.11.11.11 -i " & key_path & " mysql -uuser -ppass -e 'use radar;" & pass_query & "'", Chr(10), " ")
wsh.Run command1 & ">E:/anurag.csv", 0, True
但是我无法查看E盘中的输出文件。当我 运行 从 cmd
提示手动执行上述命令时,我确实在 E 驱动器中得到了输出。
两个想法:
- 尝试
E:\anurag.csv
而不是E:/anurag.csv
使用
cmd
调用plink
,因为cmd
通常处理重定向。将wsh.Run
行替换为:command1 = command1 & ">E:\anurag.csv" command1 = "cmd /c """ & command1 & """" wsh.Run command1, 0, True
第一行完成您要执行的命令,第二行将其包装在
cmd /c
调用中。- 如果这不起作用,请尝试将上面的
/c
更改为/c /s
每 this answer.
- 如果这不起作用,请尝试将上面的
YMMV - 未测试