一个简单的SHELL调用出错,无厘头的问题,调试出了问题,详细见内。
想在程序中加一个日志的功能。
本来这个功能有一个初步的版本,可以记录用户的每一步操作,但是没有写到磁盘文件。
按照我的想法,非常简单,用DOS命令 ECHO MESSAGE > > XXX\YYY\ZZZ.TXT
就这么一句就可以解决了。
并且在DOS窗口下直接调用也证明可行。
但是我放到程序里,用SHELL调用就出错了,说是文件找不到。
并且我已经将MESSAGE中的内容和保存文件的路径都加上了双引号。
很简单的一个函数:
Public Sub AddOpe(ByVal OpeMsg As String)
Dim CMDS As String
CMDS = "Echo " " " & OpeMsg & " " " > > " " " & App.Path & "\OPE.TXT " " "
Shell CMDS
End Sub
调用:
AddOpe "GetIni D:\Ring Li\Default.LOT "
DEBUG窗口:
CMDS=Echo "GetIni D:\Ring Li\Default.LOT " > > "D:\Ring Li\OPE.TXT "
在SHELL这一句出错,说文件找不到,我将CMDS的内容贴到DOS窗口却可以正确执行
再改成:
CMDS = "CMD/c Echo " " " & OpeMsg & " " " > > " " " & App.Path & "\OPE.TXT " " "
执行到SHELL这句依然出错,还是说文件找不到,将CMDS内容贴到DOS窗口还是可以正确执行。
DEBUG窗口:
CMDS=CMD/c Echo "GetIni D:\Ring Li\Default.LOT " > > "D:\Ring Li\OPE.TXT "
郁闷了,实在找不出问题出在哪里了。
请各位仔细看一下帖子,告诉我答案吧,谢谢了。
别告诉我用BAT,就是怕麻烦想少写两句才用ECHO的,再说,既然遇到问题,就要解决,否则睡不着觉滴。
[解决办法]
Public Sub AddOpe(ByVal OpeMsg As String)
dim hFile as integer
hfile = freefile()
open App.Path & "\OPE.TXT " for append access write as #hfile
print #hfile, opemsg
close #hfile
end sub
[解决办法]
Public Sub AddOpe(ByVal OpeMsg As String)
Dim CMDS As String
CMDS = "Echo " & OpeMsg & " > " " " & App.Path & "\OPE.TXT " & " " " "
Shell Environ( "ComSpec ") & " /c " & CMDS, vbHide
End Sub
[解决办法]
晕,空格都不加
Public Sub AddOpe(ByVal OpeMsg As String)
Dim CMDS As String
CMDS = "CMD /c Echo " " " & OpeMsg & " " " > > " " " & App.Path & "\OPE.TXT " " " 'CMD后应加个空格
Shell CMDS
End Sub
以上程序在vb6.0调试成功
[解决办法]
Dim CMDS As String
CMDS = "Echo " & OpeMsg & " > " " " & App.Path & "\OPE.TXT " & " " " "
Shell "cmd.exe /c " & CMDS