VBScript:使用参数重定向命令行的输出

VBScript:使用参数重定向命令行的输出,vbscript,Vbscript,我试图从mysql中获取“进程列表”,并将其输出到一个文件中,以用于日志记录。以下是VBScript代码: Const ForReading = 1, ForWriting = 2, ForAppending = 8 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 Dim fso, ts, fileObj, TextLine Set fso = CreateObject("Scripting.Fil

我试图从mysql中获取“进程列表”,并将其输出到一个文件中,以用于日志记录。以下是VBScript代码:

 Const ForReading = 1, ForWriting = 2, ForAppending = 8
 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
 Dim fso, ts, fileObj, TextLine

 Set fso = CreateObject("Scripting.FileSystemObject")
 FileName = "mysqlprocess.log"

 If Not(fso.FileExists(FileName)) Then
    'File does not exist'
fso.CreateTextFile FileName
 End If

 'Obtain a file object for the file'
  Set fileObj = fso.GetFile(FileName)

 ' Open a text stream for output.
 Set ts = fileObj.OpenAsTextStream(ForAppending, TristateUseDefault)

 ' Write to the text stream.
 ts.WriteLine Date & " - " & Time
 ts.WriteLine

 Set objShell = WScript.CreateObject("WScript.Shell")
 'comspec = objShell.ExpandEnvironmentStrings("%comspec%")'

 Set objExec = objShell.Exec("C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql -u root -ppassword mydatabase -t -e 'show processlist;'")
 Do
     line = objExec.StdOut.ReadLine()
     strOutput = strOutput & line & vbcrlf
 Loop While Not objExec.Stdout.atEndOfStream

 ts.WriteLine strOutput

 ts.WriteLine "=============================================="
 ts.Close
下面是写入mysqlprocesslist.log文件的内容:

2013年6月5日下午1:08:58

C:\Program Files\MySQL\MySQL Server 5.5\bin\MySQL版本14.14发行版5.5.15,适用于Win64(x86) 版权所有(c)20002010,Oracle和/或其附属公司。版权所有

Oracle是Oracle公司和/或其子公司的注册商标 附属公司。其他名称可能是其各自的商标 所有者

用法:C:\Program Files\MySQL\MySQL Server 5.5\bin\MySQL[选项][数据库] -?,--帮助显示此帮助并退出。 -一、 --帮助-的同义词? --自动重新灰化启用自动重新灰化。一个人不需要使用 “rehash”以完成表和字段,但启动 重新连接可能需要更长的时间。禁用 --禁用自动重新灰化。 (默认为打开;使用--skip auto rehash禁用。) -A、 --没有自动重新灰化 没有自动重新灰化。一个人必须使用“再灰化”来获得 表格和现场完成情况。这样可以更快地开始工作 mysql并在重新连接时禁用重新灰化。 […………]

因此,这是工作,好像它没有读出的论点。我试图将Exec行更改为包含空格,但这也不起作用:

 Set objExec = objShell.Exec("C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql" & " -u root -ppassword mydatabase -t -e 'show processlist;'")

这里有什么地方我做错了吗?

我做对了,问题在于单引号语法:

Set objExec = objShell.Exec("C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql -u root -ppassword mydatabase -t -e 'show processlist;'")
正确的答案是:

Set objExec = objShell.Exec("C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql -u root -ppassword mydatabase -t -e ""show processlist;""")