首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

一个简单的SHELL调用出错,无厘头的有关问题,调试出了有关问题,详细见内

2012-01-22 
一个简单的SHELL调用出错,无厘头的问题,调试出了问题,详细见内。想在程序中加一个日志的功能。本来这个功能

一个简单的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

热点排行