ProsperousFall 2020-07-15 15:34 采纳率: 100%
浏览 251
已采纳

C#Console在调用cmd的时候无论是cd还是F:盘符都无法更改cmd命令执行目录,有什么办法能解决呢?

C#Console在调用cmd的时候无论是cd还是F:盘符都无法更改cmd命令执行目录,有什么办法能解决呢?

图片说明

一般问题倒好应付,但是遇到调用“使用log4j写log的程序”就会导致log位置错乱。请问大佬怎么解决???

图片说明

这是代码

    public static string input(string Input)
    {
        string logs = "";
        ProcessStartInfo start = new ProcessStartInfo
        {
            FileName = "cmd.exe",
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = false,
            RedirectStandardInput = true
        };
        Process Reader = Process.Start(start);
        using (Reader)
        {
            Reader.OutputDataReceived += new DataReceivedEventHandler(OutputDataReceived);
            Reader.BeginOutputReadLine();
            Reader.StandardInput.WriteLine(Input);//输入命令
            Reader.WaitForExit();
        }
        void OutputDataReceived(object sender, DataReceivedEventArgs Outputs)
        {
            if (null != Outputs)
            {
                Console.WriteLine(Outputs.Data);
                logs = logs +"\n"+ Outputs.Data;
            }
        }
        return logs;
  • 写回答

1条回答 默认 最新

  • jingluan666 2020-07-31 16:53
    关注
                Process p = new Process();
                p.StartInfo.FileName = "cmd.exe";          
    
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.CreateNoWindow = true;
                p.Start();          
    
                string folder = Path.GetDirectoryName(filePath);
                p.StandardInput.WriteLine(Path.GetPathRoot(folder).Trim('\\'));
                p.StandardInput.WriteLine($"cd {folder}");
                p.StandardInput.WriteLine(command);
    
                p.StandardInput.AutoFlush = true;
                p.StandardInput.Flush();              
    
                p.WaitForExit();
    
                p.Close();
                p.Dispose();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 1月8日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题