我有一个共享path(如/ servername / c $ /批处理/)所有我的batch file现在我正在写一个Web应用程序在C#运行.bat文件从该应用程序。 我有办法做到这一点,当我有一个物理path。 但在这里我没有物理path。 有没有可能做到这一点。
编辑#1
我只需双击它们就可以执行我的bat文件,或者在物理服务器上打开cmd程序,然后导航到驱动器并执行bat文件。
编辑#2
当我把UNCpath得到以下错误
我得到一个错误myprogram.exe不被识别为一个内部或外部命令可操作的程序或batch file。 9009
批处理文件不支持UNC路径作为其“当前目录”。 有一个黑社会的做法:
pushd "%~dp0" your batch stuff popd
%〜dp0扩展到当前(d)rive /(p)ath /(0)批处理文件名
例:
好。 简单的批处理文件:
pushd %~dp0 echo "Hello from batch land" echo %~dp0 popd
把它放在某个服务器上,然后尝试通过unc路径运行它:
C:\> \\server\share\test.bat
你会得到输出:
C:\>pushd \\server\share\ Z:\>echo Hello from batch land Hello from batch land Z:\>echo \\server\share\ \\server\share\ Z:\>popd C:\>
奇怪,但它的作品。
这就是所谓的UNC路径 。
您可以像使用其他路径一样使用它。
但是,您的ASP.Net代码正在运行的用户必须具有对网络共享的读取访问权限。
显然,你有一个当前目录的问题。
.bat
文件正试图从当前目录运行myprogram.exe
。
您可以在映射网络共享的本地计算机上创建一个包装文件批处理文件:
pushd \\server\c$\dir call filename.bat popd
你可以把这个包装文件放在任何地方,然后从你的代码中调用它。