VBScript:使用参数重定向命令行的输出
我试图从mysql中获取“进程列表”,并将其输出到一个文件中,以用于日志记录。以下是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
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;""")