从共享应用程序打开命令提示符时出现问题

问题描述:

我有一个已部署在共享服务器上的Windows应用程序。我的应用程序将调用命令提示符来执行一些数据库操作。如果我从共享位置运行应用程序,则会遇到问题。如果我在部署的服务器上运行应用程序,则不会遇到任何问题。我拥有的问题如下。从共享应用程序打开命令提示符时出现问题

我在调用它时向命令提示符传递了一些参数。如果我从共享位置打开应用程序,并且它没有执行任何传递的参数,我会收到以下消息。

 
CMD.EXE was started with the above path as the current directory. UNC 
paths are not supported. Defaulting to Windows directory. Microsoft 
Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. 

命令提示符调用代码如下: 通常命令参数将包含@"CD \&&C:&&CD\&&CD MyFolder &&CD MySubFolder\App.bat"

  ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", command.ToString()); 
      procStartInfo.RedirectStandardOutput = true; 
      procStartInfo.UseShellExecute = false; 
      procStartInfo.CreateNoWindow = true; 
      Process proc = new Process(); 
      proc.StartInfo = procStartInfo; 
      proc.Start(); 
      string result = proc.StandardOutput.ReadToEnd(); 
      return result; 

我收到了同样的问题,如果我运行.bat文件直接为好。

答案矗立在你的问题:

CMD.EXE开始与当前目录上面的路径。 UNC 路径不受支持。默认为Windows目录。微软 的Windows XP [版本5.1.2600](C)版权所有1985-2001微软公司

http://compnetworking.about.com/od/windowsnetworking/g/unc-name.htm

摘要:UNC路径是网络路径。你的CMD说那些不支持。

+0

我尝试通过调用命令提示符“@”CD \ && C:&& CD \ && CD MyFolder && CD MySubFolder \ App.bat“”App.Bat在客户端本地计算机上,它不在服务器上运行以下命令。谢谢,Venkat Malladi –

很难从您提供的信息中说出来,但是您是否意识到,当您从共享位置运行应用程序时,应用程序在本地客户端计算机上运行,​​而不是在服务器计算机上运行。

因此,如果您正在运行的应用程序正在查找服务器上的文件,那么如果没有相对于客户端计算机的路径,它将无法找到它。

如果你不试图打开一个文件或类似的东西,那么请给一些额外的信息

+0

我不想打开服务器上的任何文件。我试图打开命令提示符来访问本地客户机上的文件。 –

+0

我试图通过调用命令提示符“@”CD \ && C:&& CD \ && CD MyFolder && CD MySubFolder \ App.bat“” App.Bat位于客户端本地计算机上,它不在服务器上。 谢谢, Venkat Malladi。 –

+0

@Venkat Malladi,你的路径需要像......“C:\ MyFolder \ MySubFolder \ App.bat”......这些“\ &&”部分是什么意思? – musefan

您可以尝试利用PUSHD/POPD命令让Windows的UNC路径映射到临时驱动器:

https://github.com/madskristensen/OpenCommandLine/issues/14#issuecomment-73608382

这应该对蝙蝠的办法上班,不知道你将不得不执行的是.bat文件,而不是CMD,或者如果你能管。