Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用asp.net/c项目代码中脚本文件夹的相对路径?_C#_Asp.net_Process_Path_Relative Path - Fatal编程技术网

C# 如何使用asp.net/c项目代码中脚本文件夹的相对路径?

C# 如何使用asp.net/c项目代码中脚本文件夹的相对路径?,c#,asp.net,process,path,relative-path,C#,Asp.net,Process,Path,Relative Path,这个问题应该相对简单,甚至不需要太多解释。我不认为,这里是这样的: 我的网站正在使用Process对象执行一个批处理文件,这当然需要指向.bat文件的路径 我将把我的网站放在多台服务器上,因此我不想给出一个绝对路径,我只想在我的项目中使用一个相对路径(例如,使用我制作项目时由visual studio自动生成的脚本文件夹) 我只是不确定,一旦它在脚本文件夹中,如何在代码中引用该文件 以下是引用my.bat的当前代码: p.StartInfo.WorkingDirectory = "C:\\Use

这个问题应该相对简单,甚至不需要太多解释。我不认为,这里是这样的:

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

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

我只是不确定,一旦它在脚本文件夹中,如何在代码中引用该文件

以下是引用my.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";
请帮忙!提前感谢:)

尝试使用
“~/”
(Web根操作符)作为站点Web根文件夹的引用

还可以使用以下命令将虚拟路径转换为物理路径:

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

Web根操作员:

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

有关更多详细信息,请参见MSDN:

尝试使用
“~/”
(Web根操作符)作为站点Web根文件夹的引用

还可以使用以下命令将虚拟路径转换为物理路径:

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

Web根操作员:

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


有关更多详细信息,请参阅MSDN:

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

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
您的代码看起来像

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

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

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
您的代码看起来像

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

请尝试以下操作:

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

请尝试以下操作:

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


考虑到我们有一个web应用程序,桌面路径是什么?问题是关于相对于web应用程序根的路径。我想你误解了我试图不使用该路径的问题。我想要的只是脚本文件夹传递到进程对象的相对路径。考虑到我们有一个web应用程序,什么是桌面路径?问题是关于相对于web应用程序根的路径。我想你误解了我试图不使用该路径的问题。我想要的只是脚本文件夹传递到流程对象的相对路径p“系统找不到指定的文件”是我尝试的结果。此外,我必须确保设置工作目录,因为我的bat文件调用了与itI位于同一文件夹中的一些EXE。我不知道批处理文件的确切位置,您需要修改上面的行以引用实际的虚拟路径。我认为您需要将批处理文件放在根目录中的特定文件夹中,以便在调用Server.mappath时可以正确引用。我将文件放在visual studio在启动新项目时默认设置的“Scripts”文件夹中的文件夹中。那么,这应该行得通吗?p、 StartInfo.FileName=this.Server.MapPath(“Scripts\test.bat”)好的,这里的每个人都是这个问题的最终答案:p.StartInfo.WorkingDirectory=this.Server.MapPath(“Scripts\\test\bat\u Thing”);p、 StartInfo.FileName=this.Server.MapPath(“Scripts\\Test\u Bat\u Thing\\Test.Bat”);Test_Bat_Thing是我在Scripts文件夹中创建的一个文件夹。这是经过测试的,效果很好,谢谢。我试着这么做是因为“系统找不到指定的文件”。此外,我必须确保设置工作目录,因为我的bat文件调用了与itI位于同一文件夹中的一些EXE。我不知道批处理文件的确切位置,您需要修改上面的行以引用实际的虚拟路径。我认为您需要将批处理文件放在根目录中的特定文件夹中,以便在调用Server.mappath时可以正确引用。我将文件放在visual studio在启动新项目时默认设置的“Scripts”文件夹中的文件夹中。那么,这应该行得通吗?p、 StartInfo.FileName=this.Server.MapPath(“Scripts\test.bat”)好的,这里的每个人都是这个问题的最终答案:p.StartInfo.WorkingDirectory=this.Server.MapPath(“Scripts\\test\bat\u Thing”);p、 StartInfo.FileName=this.Server.MapPath(“Scripts\\Test\u Bat\u Thing\\Test.Bat”);Test_Bat_Thing是我在Scripts文件夹中创建的一个文件夹。这是经过测试的,效果很好,谢谢。那么我如何引用~?中的脚本文件夹呢?我尝试的一切都不起作用>。试试
~/scripts/
。请在IIS中查看什么是WebRoot路径,并确保脚本文件夹位于此根路径下。那么,如何从~引用脚本文件夹?我尝试的一切都不起作用>。试试
~/scripts/
。在IIS中查看什么是WebRoot路径,并确保scripts文件夹位于该根路径下。