我有以下批处理文件:
net use %3 password /USER: username
xcopy %1 %3
echo %errorlevel% >> logfile.txt
xcopy %2 %3
echo %errorlevel% >> logfile.txt
exit
%1和%2是我要复制到共享目录(%3)的源文件。
如果我以传统的方式运行这个批处理文件(使用正确的值),它可以随时运行,但如果我从.NET运行它,它只能在第一个(可能是第二个)时间运行,然后第一个xcopy返回错误代码4和第二个错误代码未注册(我想,第二个xcopy根本没有运行)。另外,如果我写if exist %3 echo exist
,我会收到9009错误代码。
.NET代码:
String batchFile = GetConfigValue("batch_path");
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = batchFile;
startInfo.Arguments = String.Format("\"{0}\" \"{1}\" \"{2}\"", file1Path, file2Path, this.sharedDirectory);
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
process.StartInfo = startInfo;
bool b = process.Start();
process.WaitForExit();
Int32 exitCode = process.ExitCode;
process.Close();
process.Start()
之后的代码没有运行,也没有例外。
该过程可能会锁定网络共享或类似的东西。我试着致电process.Dispose()
和process.Kill()
,但他们没有帮助。