以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何判断自己的项目运行路径是在桌面或我的文档?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59448)

--  作者:L88919138
--  发布时间:2014/11/4 15:48:00
--  如何判断自己的项目运行路径是在桌面或我的文档?
如何判断自己的发布项目运行路径是在桌面或我的文档?自己设计项目采用FTP服务器来升级,用ProjectPath来获取项目路径,结果发现在电脑桌面、我的文档等特殊路径无法正常升级(其他如C、D盘可以正常升级),在帮助中有提到SpecialFolder,用于获得一些特殊目录的路径,但是例子介绍太少,无法参照,想让大师们解惑下,谢谢。
--  作者:有点甜
--  发布时间:2014/11/4 15:51:00
--  

 直接获取就行了。获取以后,跟你的升级路径来对比

 

 If 升级路径.Contains(SpecialFolder.MyDocuments) Then


--  作者:L88919138
--  发布时间:2014/11/4 16:18:00
--  

 有点甜老师,这是我要删除的项目程序代码,如何获取我的文档路径并与原路径比较,看得不是很明白,能不能帮忙补充下代码,谢谢。

 

Dim upathPub As String = ProjectPath & ".." \'需要删除的项目Publish路径,".."表示上一级目录


    Dim s As String = upathPub & "\\update.bat"
    If FileSys.FileExists(s) Then
        FileSys.DeleteFile(s)
    End If
    FileSys.WriteAllText(s,"@echo off" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"@title 自动升级..." & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"taskkill /f /im foxtable.exe" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"@cls" & vbcrlf,True,Encoding.Default) \'清除屏幕.清除删除 foxtable.exe 进程后屏幕反馈的信息.
    FileSys.WriteAllText(s,"echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"Delay.vbs 3" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"del Delay.vbs" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"@cls" & vbcrlf,True,Encoding.Default) \'清除屏幕.清除升级文件后屏幕反馈的信息.
    FileSys.WriteAllText(s,"rd /s /q " & upathPub & vbcrlf,True,Encoding.Default) \'删除临时文件夹


    Dim Proc As New Process \'定义一个新的Process
    Proc.File = s \'指定要打开的文件
    Proc.Verb = "Open" \'指定动作
    Proc.Start()
    proc.WaitForExit


--  作者:有点甜
--  发布时间:2014/11/4 16:24:00
--  

If upathPub.Contains(SpecialFolder.MyDocuments) Then

 

End If


--  作者:L88919138
--  发布时间:2014/11/4 19:10:00
--  
谢谢甜大师指点。图片点击可在新窗口打开查看
--  作者:L88919138
--  发布时间:2014/11/4 19:54:00
--  

甜大师,不好意思图片点击可在新窗口打开查看,旧问题刚解决,新的问题又冒出,上述程序代码假设检测出项目路径是在我的文档,现在想把upathPub赋值到我的文档里该项目中去,这代码如何写?谢谢。

 

我试了以下代码情况:

If upathPub.Contains(SpecialFolder.MyDocuments) Then

upathPub = SpecialFolder.MyDocuments      这个代码只能定义到我的文档,不能是我的文档里的项目文件夹。

upathPub = SpecialFolder.MyDocuments & ProjectPath & ".."     这个代码运行后报错

End If


--  作者:有点甜
--  发布时间:2014/11/4 20:07:00
--  

 不理解你想做什么

 

Dim upathPub As String = ProjectPath & ".."


--  作者:L88919138
--  发布时间:2014/11/4 20:18:00
--  

比如上述代码是在升级新狐表项目前,先删除旧的发布项目部份的代码,结果发现狐表项目若在C、D盘时运行正常(可以删除项目),而若将项目放在电脑桌面或我的文档就不能删除旧的发布项目,自然会影响后的正常升级。

因此我想在程序中先增加判定项目是否在特殊目录中,若是在特殊目录里,就把对应的路径设为特殊目录(如我的文档等)


--  作者:有点甜
--  发布时间:2014/11/4 20:24:00
--  

  你这个应该是空格的问题吧?

 

FileSys.WriteAllText(s,"rd /s /q " & upathPub & vbcrlf,True,Encoding.Default) \'删除临时文件夹

 

 改成

 

FileSys.WriteAllText(s,"rd /s /q """ & upathPub & """" & vbcrlf,True,Encoding.Default) \'删除临时文件夹


--  作者:L88919138
--  发布时间:2014/11/5 6:04:00
--  

用甜大师改过的代码运行确实达到我想要的效果,只是不明白正确的代码为什么要加上两个双引用号为什么?还请大师指点下谢谢。