【问题标题】:How to change the current directory via ProcessStartInfo and cmd如何通过 ProcessStartInfo 和 cmd 更改当前目录
【发布时间】:2013-05-26 09:46:01
【问题描述】:

目前我正在使用 ProcessStartInfo 围绕 CMD 开发一个小型包装器,尝试模拟命令窗口并添加一些我迫切需要的额外功能。

此 WINFORM 应用程序是一个多选项卡应用程序,因此您可以启动多个“会话”。此外,由于内容存储在富文本框中,我可以轻松复制它,更重要的是搜索控制台日志。

到目前为止,一切似乎都很好,但是当我询问当前目录时,我看到了这个应用程序的位置,这很好。但是当我向上一个目录时,它似乎不起作用。

我很确定我做错了什么。可以指出我是什么,我做错了什么吗?这是处理代码执行的代码摘录。

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.RedirectStandardInput = true;
procStartInfo.UseShellExecute = false;
// Do not create window.
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(onOutputDataReceived);
proc.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(onErrorDataReceived);
proc.Start();
proc.StandardInput.WriteLine("/c " + cmd);
proc.StandardInput.Close();
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
proc.WaitForExit();

【问题讨论】:

  • 你需要比“不起作用”更具体。
  • 你是对的。我注意到目录保持不变。如果我键入 cd .. 则当前目录不会向上移动。此外,当我明确使用绝对路径时,例如 cd c:\temp,它也没有给我预期的结果:当前目录保持不变。

标签: c# cmd cd processstartinfo


【解决方案1】:

每次您想要执行命令时,您似乎都在启动一个新进程。如果您希望环境(如当前路径)在命令之间保持相同,则需要保存环境并将其加载到新进程中,或者保持单个进程处于打开状态。

【讨论】:

  • 啊哈,谢谢。我没有意识到这一点。这就解释了这种奇怪的行为(毕竟这并不奇怪;-)。我会做必要的修改。
猜你喜欢
  • 1970-01-01
  • 2020-06-05
  • 2011-12-05
  • 2014-12-02
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 2010-10-05
相关资源
最近更新 更多