zoukankan      html  css  js  c++  java
  • 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_spiderWpfApplication1/phprun.bat"  "D:workspace22 空格amaz_spiderWpfApplication1/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 绌烘牸AtiBrowexp_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

     

     

  • 相关阅读:
    UVA 11925 Generating Permutations 生成排列 (序列)
    UVA 1611 Crane 起重机 (子问题)
    UVA 11572 Unique snowflakes (滑窗)
    UVA 177 PaperFolding 折纸痕 (分形,递归)
    UVA 11491 Erasing and Winning 奖品的价值 (贪心)
    UVA1610 PartyGame 聚会游戏(细节题)
    UVA 1149 Bin Packing 装箱(贪心)
    topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
    UVA 1442 Cave 洞穴 (贪心+扫描)
    UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
  • 原文地址:https://www.cnblogs.com/attilax/p/5963624.html
Copyright © 2011-2022 走看看