Dim s As StringOn Error Resume Nexts = CurDir '当前目录
'保证目录最后的字符为 "\"If Right(s, 1) <> "\" Then
s = s & "\"
End If '在当前目录下创建bat文件Open s & "kill.bat" For Output As #1
Print #1, ":redel"
Print #1, "del " & Chr(34) & s & App.EXEName & ".exe" & Chr(34)
Print #1, "if exist " & Chr(34) & s & App.EXEName & ".exe" & Chr(34) & " goto redel"
Print #1, "del %0"
Print #1,
Close #1
Shell Chr(34) & s & "kill.bat" & Chr(34), vbHide
End
------------------------------------------------------------------
这个字符串变量 S的作同是什么呢?
------------------------------------------------------------------
If Right(s, 1) <> "\" Then
s = s & "\"
End If '在当前目录下创建bat文件为什么 一定要保证 '保证目录最后的字符为 "\" 这个?-----------------------------------------------------------------
Open s & "kill.bat" For Output As #1这句在这里建立一个打开的批处理文件为什么 前面还加了S?Open app.path "\kill.bat" for output as #1我通常喜欢这样写 -------------------------------------------------------------------Print #1,
 最后面 一个print#1 没有什么代码写入  是不是多余的?
--------------------------------------------------------------------Shell Chr(34) & s & "kill.bat" & Chr(34), vbHide为什么运行这个批处理的时候  要加 这个chr(34)我用立即窗口测试 这个chr(34 ) 是双引号但是加它是为什么呢 

解决方案 »

  1.   

    把最后的运行代码 就直接改成 shell "kill.bat",vbhide
    也达到了一样的效果 上面的代码是我在在网络上找到的 我很想仔细研究下原理 
      

  2.   

    字符串变量S是当前EXE程序所在的路径
    如果S后面不是"\"直接拼上文件名 那么路径是错误的
    打开那个批处理文件的时候加上S还是为了能够通过绝对路径找到kill.bat
    那个CHR(34)是因为作者不喜欢写成 """"
      

  3.   

    chr(34)   是代表 "   还是""""
    百度里查是"为什么实际测试是""""
      

  4.   

    ------------------------------------------------------------------ 
    这个字符串变量 S的作同是什么呢? 
    ------------------------------------------------------------------ 
    获得程序当前所有路径------------------------------------------------------------------ 
    If Right(s, 1) <> "\" Then 
    s = s & "\" 
    End If '在当前目录下创建bat文件 为什么 一定要保证 '保证目录最后的字符为 "\" 这个? 
    ----------------------------------------------------------------- 
    写绝对路径时,以下这样写肯定是错的:
    c:\xxxkill.bat(xxx为文件kill.bat所在文件夹)
    所要保证文件夹最的一个字符为"\"
    c:\xxx\kill.bat----------------------------------------------------------------- 
    Open s & "kill.bat" For Output As #1 
    这句在这里建立一个打开的批处�
    �文件 
    为什么 前面还加了S? 
    ------------------------------------------------------------------- 
    加S是为取得绝对路径:
    比如:c:\xxx\kill.bat----------------------------------------------------------------- 
    Open app.path "\kill.bat" for output as #1 
    我通常喜欢这样写 
    ----------------------------------------------------------------- 
    如果你的程序在某盘根目录下就会出错,路径为:
    比如c盘根目录,你的路径就会是:
    c:\\kill.bat------------------------------------------------------------------- 
    Print #1, 
    最后面 一个print#1 没有什么代码写入  是不是多余的? 
    -------------------------------------------------------------------- 
    这并不多余,他是想在文件中未加一个空行-------------------------------------------------------------------- 
    Shell Chr(34) & s & "kill.bat" & Chr(34), vbHide 
    为什么运行这个批处理的时候  要加 这个chr(34) 
    我用立即窗口测试 这个chr(34 ) 是双引号 
    但是加它是为什么呢
    -------------------------------------------------------------------- 
    他是要把绝对路径用双引号引起来
    就象这样:"c:\xxx\kill.bat"Chr(34) & s & "kill.bat" & Chr(34)运行时就你在监视里可以看到:
    ""C:\Documents and Settings\Administrator\桌面\新建文件夹 (8)\kill.bat""
    注意前面两个""后面两""所以是四个,它的意思是包含双引号的字符串.
    string串变量在Shell后面不能直接用,不知道为什么,它要的是双引号引起来的字符串.其实他这方法廷笨的(你可以理解为他不太会用双引号),你可以如下作,是一样的:
    Shell """" & s & "kill.bat" & """", vbHide也就是说:也就是说VB里双引号里引用一个双引号,要使用2个双引号"""",而不是一个""".
      

  5.   

    另外取路径判断加不加"\"也不用象原程序那么多步,一句话就可以:
    s = IIf(Len(App.Path) > 3, App.Path & "\", App.Path) 
      

  6.   


    Dim sDoubleQuotation as string
    sDoubleQuotation=""""定义好直接用吧
      

  7.   

    chinaboyzyq chewinggum 两位大哥 谢谢你们 我已经反复看了下  理解了 学到了一些技巧 呵呵 我最近发现只有 仔细抠一些代码 可以使我提升一些 要不我发现我不上升了