Atitit.执行cli cmd的原理与调试
Atitit.执行cli cmd的原理与调试
5. 返回参数 StandardOutput StandardError3
1. /c 与/k
。如果使用 cmd/c 就可以省掉 EXIT 了
2. /k 参数,有利于调试
使用process explorer可以看到实际的调用参数
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/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" 只是设置post,get的编码,不能设置php文件的读取编码。。最好是注释掉此参数,让他根据文件本身的编码自动判断,否则输出的php结果都 header('Content-Type:text/html;charset=utf8
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/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
Atitit.执行cli cmd的原理与调试的更多相关文章
- atitit.跨语言执行cmd cli api的原理及兼容性设计草案
atitit.跨语言执行cmd cli api的原理及兼容性设计草案 1. 标准输入,标准输出,标准错误与重新定向1 2. 常见问题2 2.1. 执行bat文件2 2.2. 执行bat文件 /c ...
- Atitit.执行cmd 命令行 php
Atitit.执行cmd 命令行 php 1. 执行cmd 命令行,调用系统命令的基础 1 1.1. 实际执行模式 1 1.2. 空格的问题 1 1.3. 中文路径的问题,程序文件读取编码设置 1 1 ...
- atitit.木马病毒webshell的原理and设计 java c# .net php.
atitit.木马病毒webshell的原理and设计 java c# .net php. 1. 隐蔽性 编辑 WebShell后门具有隐蔽性,一般有隐藏在正常文件中并修改文件时间达到隐蔽的,还有利用 ...
- Atitit.异常机制的设计原理
Atitit.异常机制的设计原理 缺陷 关键是只要知晓有一个异常表的存在,try 的范围就是体现在异常表行记录的起点和终点.JVM 在 try 住的代码区间内如有异常抛出的话,就会在当前栈桢的异常表中 ...
- Atitit paip.对象方法的实现原理与本质.txt
Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...
- atitit.http get post的原理以及框架实现java php
atitit.http get post的原理以及框架实现java php 1. 相关的设置 1 1.1. urlencode 1 1.2. 输出流的编码 1 1.3. 图片,文件的post 1 2. ...
- atitit.jndi的架构与原理以及资源配置and单元測试实践
atitit.jndi的架构与原理以及资源配置and单元測试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin <database> ...
- atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx
atitit.软件与sql设计模式原理与本质 大总结attialx总结v6 qc26.docx 1.1. 版本历史2 2. 设计模式是什么2 2.1. 模式就是在一种场合下对某个问题的一个解决方案.& ...
- Atitit 在线支付系统功能设计原理与解决方案 与目录
Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...
随机推荐
- Java构造和解析Json数据的两种方法详解一——json-lib
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...
- 如何优雅的编写Objective-C语言?
① 减少缩写 命名缩写只用于通用专业术语,如URL,不可自创命名缩写,如Ctr.Msg.命名宁可长一些,也不要难于理解. ② 过程化 动作发生之前用Will,发生之后用Did,询问是否发生用Shoul ...
- Windows下生成 公钥 私钥以及 配置 Filezilla中的 SFTP的私钥
Win下需要使用到 PuTTYgen.exe来生成公钥私钥,可以参考youtube的这篇文章: 为 SFTP 保管箱生成 Secure Shell (SSH) 密钥对 PuTTYgen.exe的下载 ...
- 1:MUI选择器组件抛出“n.getSelectedItem is not a function”异常的解决办法 2:mui三级联动 3:移动端关闭虚拟键盘
1:如下图 问题:引用了mui的地址选择的三级联动的应用在h5上的组件 百度发现别人思路对 Array 原型链方法扩充时,会抛出这个异常. 修改方法: mui.poppicker.js 第 112 行 ...
- Dev之ribbon设置
- vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除
一.SPA 不是指水疗.是 single page web application 的缩写.中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索. 所有的前端人员都应该明白我们的页面的 u ...
- 【实践】用for-in 循环实现三联联动
之前用jq 做过一次三联联动以及四联联动 现在为了更好地了解对象用js的原生方式做了一次 *本节要点方法: obj.selectedIndex 获取下拉列表选中的option 的索引 obj.o ...
- OC中数组的使用方法
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // 创建数组 NS ...
- 安装ADT的时候,提示“Cannot complete the install because one or more required items could not be
今天在安装ADT的时候,提示: Cannot complete the install because one or more required items could not be found. S ...
- JavaScript的String对象
1.创建String对象 Html标签的格式编排方法:可以将String对象的字符串内容输出成对应的html标签. 示例: var str = "JavaScript程序设计"; ...