【问题标题】:Why does the UNC pathway not work when running batch file from console?为什么从控制台运行批处理文件时 UNC 路径不起作用?
【发布时间】:2012-08-22 17:32:07
【问题描述】:

我有一个非常简单的批处理文件:

echo Text > Test.txt

这个文件保存在这里:

R:\Testing123.bat
完整的 UNC 途径是
\\imfile\depart$\DB\Testing123.bat

在我的控制台应用程序中,以下运行:

Process myProcess = new Process();
myProcess.StartInfo.UseShellExecute = true;
myProcess.StartInfo.WorkingDirectory = @"R:\";
myProcess.StartInfo.FileName = @"Testing123.bat";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();

如果我使用完整路径,这不会运行:

Process myProcess = new Process();
myProcess.StartInfo.UseShellExecute = true  ;
myProcess.StartInfo.WorkingDirectory = @"\\imfile\depart$\DB\";
myProcess.StartInfo.FileName = @"Testing123.bat";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();

我可以不将这些 UNC 路径用于 WorkingDirectory 属性吗?我认为在编程时使用这些路径总是最佳实践?

编辑

使用其中一个建议,我现在有以下不幸仍然不起作用:

{

    Process myP = new Process();
    myP.StartInfo.UseShellExecute = false;
    string myString = @"pushd \\imfile\depart$\DB";
    myP.StartInfo.FileName = "cmd";
    myP.StartInfo.Arguments = myString;
    myP.StartInfo.CreateNoWindow = true;
    myP.Start();

    Process myProcess = new Process();
    myProcess.StartInfo.UseShellExecute = true  ;
    myProcess.StartInfo.WorkingDirectory = @"\\imfile\depart$\DB";
    //myProcess.StartInfo.WorkingDirectory = @"R:\";
    myProcess.StartInfo.FileName = @"Testing123.bat";
    myProcess.StartInfo.CreateNoWindow = true;
    myProcess.Start();

}

【问题讨论】:

  • 命令行无法识别 UNC 路径。您必须使用第一个代码块中的驱动器号。理想情况下,它将在批处理文件本身中临时创建,因此不会遇到用户设置问题。

标签: c# command-line batch-file


【解决方案1】:

bat 文件是通过 cmd.exe 执行的,它(默认情况下)不允许 UNC 路径作为“工作目录”。但是,您可以通过注册表更改此行为。

 [HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
 "DisableUNCCheck"=dword:00000001

http://support.microsoft.com/kb/156276

我从Far Manager TechInfo Section 2.2 获知此信息。

【讨论】:

    猜你喜欢
    • 2015-09-13
    • 2016-07-30
    • 2022-01-08
    • 2015-04-19
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多