【问题标题】:how do i use the relative path to the scripts folder in my asp .net / c# project code?如何在我的 asp .net / c# 项目代码中使用脚本文件夹的相对路径?
【发布时间】:2012-03-12 04:32:40
【问题描述】:

这个问题应该比较简单,我认为不需要太多解释,这里是:

我的网站正在使用 Process 对象执行一个批处理文件,当然这需要一个 .bat 文件的路径

我将把我的网站存放在多台服务器上,因此我不想给出绝对路径,我只想在我的项目中使用相对路径(例如,在我创建项目时使用由 Visual Studio 自动生成的脚本文件夹)

我只是不确定在脚本文件夹中后如何在代码中引用该文件。

这是我当前用于引用我的 .bat 的代码:

p.StartInfo.WorkingDirectory = "C:\\Users\\e\\Desktop\\Test_Bat_Thing";
p.StartInfo.FileName = "C:\\Users\\e\\Desktop\\Test_Bat_Thing\\test.bat";

效果很好。但我希望它类似于

p.StartInfo.WorkingDirectory = ".\\scripts";
p.StartInfo.FileName = ".\\scripts\\test.bat";

请帮忙!在此先感谢:)

【问题讨论】:

    标签: c# asp.net process path relative-path


    【解决方案1】:

    尝试以下方法:

    p.StartInfo.FileName = this.Server.MapPath("test.bat")
    

    【讨论】:

    • “系统找不到指定的文件”是我尝试的。我还必须确保设置工作目录,因为我的 bat 文件调用了一些与它位于同一文件夹中的 EXE
    • 我不知道你的批处理文件到底在哪里,你需要修改上面的行来引用实际的虚拟路径。我认为您需要将批处理文件放在根目录中的特定文件夹中,以便在调用 Server.MapPath 时可以正确引用
    • 我将文件放在 Visual Studio 在您启动新项目时默认创建的“脚本”文件夹内的文件夹中
    • 那么,这应该行吗? p.StartInfo.FileName = this.Server.MapPath("Scripts\test.bat")
    • 好的,这里的每个人都是这个问题的最终答案,确实有效:p.StartInfo.WorkingDirectory = this.Server.MapPath("Scripts\\Test_Bat_Thing"); p.StartInfo.FileName = this.Server.MapPath("Scripts\\Test_Bat_Thing\\test.bat"); Test_Bat_Thing 是我在 Scripts 文件夹中创建的文件夹。这是经过测试并且工作正常,谢谢。
    【解决方案2】:

    尝试使用"~/"(Web Root Operator)作为对站点 Web 根文件夹的引用。

    您还可以使用以下方法将虚拟路径转换为物理路径:

    string rootPath = Server.MapPath("~");
    

    网络根操作符:

    ASP.NET 包括 Web 应用程序根运算符 (~),您可以 在服务器控件中指定路径时使用。 ASP.NET 解决了 ~ 运算符到当前应用程序的根目录。你可以用~ 运算符与文件夹一起指定基于路径的路径 在当前根目录上。

    更多详情见 MSDN:ASP.NET Web Project Paths

    【讨论】:

    • 那么我如何从 ~ 引用脚本文件夹?我尝试的一切都不起作用>.
    • 试用~/scripts/。在 IIS 中查看什么是 WebRoot 路径,并确保脚本文件夹位于此根路径下。
    【解决方案3】:

    如果需要引用当前用户的桌面路径,可以使用这个语句

    string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    

    你的代码看起来像

    p.StartInfo.FileName = System.IO.Path.Combine(desktopPath, "\\Test_Bat_Thing\\test.bat");
    

    【讨论】:

    • 考虑到我们有一个 Web 应用程序,什么是桌面路径?
    • 问题是关于相对于网络应用根目录的路径。
    • 我认为你误解了我试图不使用该路径的问题。我想要的只是将脚本文件夹传递到 Process 对象的相对路径 p
    猜你喜欢
    • 2019-03-10
    • 2011-02-11
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多