• Atitit.执行cli cmd的原理与调试


    Atitit.执行cli cmd的原理与调试

     

    1/c  /k 1

    2/k  参数,有利于调试 1

    3-------code 2

    4打开程序后与openner脱离关系 3

    5返回参数 StandardOutput  StandardError 3

    6Bat参数的隐藏命令::使用@后头符 3

    6.1. 1.1. 实际执行模式 3

    6.2. 1.2. 空格的问题 3

    6.3. 1.3. 中文路径的问题,程序文件读取编码设置 3

    6.4. 1.4. 回显乱码 4

    7双引号转译问题 4

    8参数 4

     

    1. /c  /k

    。如果使用 cmd/c 就可以省掉 EXIT 

    2. /k  参数,有利于调试

    使用process explorer可以看到实际的调用参数

     

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

     

     

    Atitit.执行cmd的原理与调试

    "cmd.exe"  /k  "D:\workspace3 空格\amaz_spider\WpfApplication1/phprun.bat"  "D:\workspace22 空格\amaz_spider\WpfApplication1/com.attilax/api.php"  "tagP823=1&textfield=2015-9-1&textfield2=09%253A10&prod_name=iphone%2bcase&select=%25E6%258E%2592%25E5%2590%258Dxy&select3=%25E6%258E%2592%25E5%2590%258Dxy&select4=%25E5%25A5%25BD%25E8%25AF%2584&select5=%25E5%25A5%25BD%25E8%25AF%2584&select6=%25E8%25B7%259F%25E5%258D%2596%25E4%25B8%25AA%25E6%2595%25B0&select9=%25E8%25B7%259F%25E5%258D%2596%25E4%25B8%25AA%25E6%2595%25B0&select7=%25E5%25A5%25BD%25E8%25AF%2584%25E6%2595%25B0%25E7%259B%25AE&select8=%25E5%25A5%25BD%25E8%25AF%2584%25E6%2595%25B0%25E7%259B%25AE&select2=%25E5%25BA%2597%25E9%2593%25BA%25E8%25AF%2584%25E4%25BB%25B7%25E6%2595%25B0&select10=%25E5%25BA%2597%25E9%2593%25BA%25E8%25AF%2584%25E4%25BB%25B7%25E6%2595%25B0&method=search_context&$callback=search_context_finish&$parser=php"

     

    3. -------code

        public class Cmd

        {

            private Process proc = null;

            /// <summary>

            /// 构造方法

            /// </summary>

            public Cmd()

            {

                proc = new Process();

            }

            /// <summary>

            /// 执行CMD语句

            /// </summary>

            /// <param name="cmd">要执行的CMD命令</param>

            public string RunCmd(string cmd)

            {

                proc.StartInfo.CreateNoWindow = true;

                proc.StartInfo.FileName = cmd;

                    //"cmd.exe";

                proc.StartInfo.UseShellExecute = false;

               proc.StartInfo.RedirectStandardError = true;

               proc.StartInfo.RedirectStandardInput = true;

               proc.StartInfo.RedirectStandardOutput = true;

          //      proc.StartInfo.Arguments = " /k  " + cmd;//“/C”表示执行完命令后马上退出   

               

                proc.Start();

                proc.WaitForExit();//这里无限等待进程结束  

         //     proc.StandardInput.WriteLine(cmd);

           //     proc.StandardInput.WriteLine("exit");

                string outStr = proc.StandardOutput.ReadToEnd();

                string errstr = proc.StandardError.ReadToEnd();

                Console.WriteLine(errstr);

                proc.Close();

                return outStr;

            }

     

    4. 打开程序后与openner脱离关系

    应该使用cmd /c ???

     

    5. 返回参数 StandardOutput  StandardError

     

        string outStr = proc.StandardOutput.ReadToEnd();

                string errstr = proc.StandardError.ReadToEnd();

     

    6. Bat参数的隐藏命令::使用@后头符

    6.1.     1.1. 实际执行模式

    Processmonitor 检查。得到。。

    PID: 115372, Command line: cmd.exe /c "D:\workspace 绌烘牸\AtiBrow\exp_receipt.bat"

    6.2. 1.2. 空格的问题

    双引号解决

    6.3. 1.3. 中文路径的问题,程序文件读取编码设置

    Php.ini中的default_charset = "utf-8"  只是设置postget的编码,不能设置php文件的读取编码。。最好是注释掉此参数,让他根据文件本身的编码自动判断,否则输出的php结果都 header('Content-Type:text/html;charset=utf8

     

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

     

    原因在于php文件本身是用系统字符集来编码的,中文的windows XP都是用GB2312,每一个文件头部都有字段指示该文件是用何种方式编码的

     

    javac编译java源文件时,编译器默认用系统编码读源文件里的内容。如果源文件不是用系统编码来保存的,可以用命令javac -encoding指定具体的编码

     

    淋巴,只能不个php文件的编码设置成gbk。。才ok。。

     

    6.4. 1.4. 回显乱码

     

     header('Content-Type:text/html;charset=gbk');  

     

    7. 双引号转译问题

    好像是三个双引号   

    8. 参数

    执行 CMD 时,参数加引号常见问题 的米-漠石's Blog - 博客频道 - CSDN.NET.html

    C#执行DOS命令(CMD命令) 杨友山 博客频道 - CSDN.NET

    paip.asp vbs通过CLI命令行调用PHP代码 - attilax的专栏 博客频道 - CSDN.NET

    paip.执行shell cmd 命令uapi java php python总结 - attilax的专栏 博客频道 - CSDN.NET

    paip.python 执行shell 带空格命令行attilax总结- python教程 中国黑帽网.html

    Atitit.执行cmd 命令行 php - attilax的专栏 博客频道 - CSDN.NET.html

     

     

  • 相关阅读:
    Jump Game II
    Trapping Rain Water
    First Missing Positive
    Median of Two Sorted Arrays
    noip2012开车旅行 题解
    AC自动机专题总结
    初探数位DP
    斯坦纳树 [bzoj2595][wc2008]游览计划 题解
    [bzoj3244][noi2013]树的计数 题解
    网络流模型小结
  • 原文地址:https://www.cnblogs.com/attilax/p/15198852.html
Copyright © 2020-2023  润新知