zoukankan      html  css  js  c++  java
  • C# 调用命令行,参数有空格

     在程序中调用cmd命令打开一个文件,而文件路径带有空格,如果直接把路径传给cmd,那么cmd就会把路径空格前面的部分当做是一个参数,空格后当做另一个参数,命令行执行把后边截掉了,导致程序出错,会弹出了C:Program 不是内部或外部命令,也不是可运行的程序或批处理文件的错误提示。解决方法是把传入的参数前后添加双引号,如下:

      private static void ResxToRes(ArrayList ResxPath)
            {
                //ResxFile 是一个文件夹,用来存放 需要转换的.resx 文件
                string s = "";
                Process p = new Process();
                p.StartInfo.FileName = "cmd.exe";
    
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.CreateNoWindow = false;
    
                p.Start();
    
                // + '"' + '"' + 可以用 ""   替换
               // p.StandardInput.WriteLine("%comspec% /k " + '"' + '"' + @"C:Program Files (x86)Microsoft SDKsWindowsv7.0Ain" + '"' + '"');
                // p.StandardInput.WriteLine("%comspec% /k " + '"' + '"' + @"C:Program FilesMicrosoft Visual Studio 10.0VCvcvarsall.bat" + '"' + '"' + " x86 ");
    
               // p.StandardInput.WriteLine(@" cd C:Program FilesMicrosoft SDKsWindowsv6.0ABin");
                for (int i = 0; i < ResxPath.Count; i++)
                {
                    string Filename = ResxPath[i].ToString();
                   //根据需要写相应算法生成文件名;
    
                    ////resgen E:Filename1.resx e:ResName1.resources
                   // p.StandardInput.WriteLine("ResGen" + Filename + " " + System.IO.Path.GetFileNameWithoutExtension(Filename) + @".resx");string
    
                     string ResName =Path.GetFullPath(Filename)+ ".resx";
                     string str = """+@"C:Program FilesMicrosoft SDKsWindowsv6.0ABinResGen.exe"+""" + "  " + Filename + " " + ResName;
                     p.StandardInput.WriteLine(str);//参数带有空格 应加上引号处理
                    p.StandardInput.WriteLine(" ");
    
                }
                //此处要exit两次
    
                //退出visual studio 到 cmd.exe
                p.StandardInput.WriteLine("exit");
    
                //退出cmd.exe
                p.StandardInput.WriteLine("exit");
                p.WaitForExit();
                s = s + p.StandardOutput.ReadToEnd();
                p.Close();
               // return s;
            }
     public static string startcmd(string command)
            {
                string output = "";
                try
                {
                    Process cmd = new Process();
                    cmd.StartInfo.FileName = command;
                    cmd.StartInfo.UseShellExecute = false;
                    cmd.StartInfo.RedirectStandardInput = true;
                    cmd.StartInfo.RedirectStandardOutput = true;
                    cmd.StartInfo.CreateNoWindow = true;
                    cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    cmd.Start();
                    output = cmd.StandardOutput.ReadToEnd();
                    Console.WriteLine(output);
                    cmd.WaitForExit();
                    cmd.Close();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
                return output;
            }
    
            public static string startcmd(string command, string argument)
            {
                string output = ""; 
                Process cmd = new Process();
                try
                {
                  
                    cmd.StartInfo.FileName = command;
                    cmd.StartInfo.Arguments = argument;
                    cmd.StartInfo.UseShellExecute = false;
                    cmd.StartInfo.RedirectStandardInput = true;
                    cmd.StartInfo.RedirectStandardOutput = true;
                    cmd.StartInfo.CreateNoWindow = true;
                    cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    cmd.Start();
                    output = cmd.StandardOutput.ReadToEnd();
                    Console.WriteLine(output);
                    cmd.WaitForExit();
                    cmd.Close();
                }
                catch (Exception e)
                {
                    cmd.Close();
                    Console.WriteLine(e);
                }
                return output;
            }
  • 相关阅读:
    TextSharp详情
    Java使用Itext5.5.10进行pdf签章
    java生成PDF,各种格式、样式、水印都有
    使用itext直接替换PDF中的文本
    在Asp.Net中操作PDF – iTextSharp
    使用iTextSharp修改PDF文件(一)
    微信公众平台HTTPS方式调用配置免费https服务器
    ef SQL Server 版本不支持数据类型“datetime2”
    开源框架.netCore DncZeus学习(三)增加一个菜单
    开源框架.netCore DncZeus学习(二)配置连接
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/4053388.html
Copyright © 2011-2022 走看看