C#调用执行BAT里面有些命令无法执行是为什么呢?

帅得_被人砍 2015-01-29 12:35:47
C#调用执行BAT文件里面有些命令无法执行,但是直接运行bat文件哪里面的命令都执行了,而已复制里面的命令在CMD里面也是可以执行的。bat文件里面命令:
命令1:netsh dhcp server 123.60.226.10 scope 123.60.226.0 add reservedip 123.60.226.6 00e081d89861 123.60.226.6
命令2:copy d:\test\1.txt d:\

如果用C#来调用执行这个BAT文件的话,第2条命令执行了,第1条没有执行,但是如果直接双击这个BAT文件是可以执行这2条命令的,或者直接用DOS输出也是可以执行的,为什么用C#调用执行BAT都不行了呢,求解各位大神,在此先谢谢了

C#调用这个BAT文件的代码:
 System.Diagnostics.Process.Start(Server.MapPath("setSystem.bat"));
...全文
922 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
q67945985 2018-09-21
  • 打赏
  • 举报
回复
我知道怎么解决 因为你执行的这个命令存在于用户环境变量里面但是不存在于系统环境变量里面.[size=24px][/size] 你只需要将这个命令的用户环境变量复制到系统环境变量里面就可以成功执行了.亲测有效. pro.StartInfo.UseShellExecute = true; 这个参数是用于是否用本地的cmd工具,你可以用false pro.StartInfo.RedirectStandardOutput = true; pro.StartInfo.RedirectStandardInput = true; pro.StartInfo.RedirectStandardError = true; pro.Start(); string strRst = pro.StandardOutput.ReadToEnd(); string errrst = pro.StandardError.ReadToEnd(); pro.WaitForExit(); pro.Close(); 这样看到命令执行的输出结果.查看命令是否真正执行了. 我是来求分的. 有问题可以直接在线问我.
danlanle 2016-12-20
  • 打赏
  • 举报
回复
楼主 有解决吗?
灰阶 2016-03-24
  • 打赏
  • 举报
回复
Process p = new Process(); p.StartInfo.FileName = "你想要打开的EXE的绝对路径"; p.StartInfo.WorkingDirectory = "EXE文件所在的文件夹"; p.Start(); 我是通过配置WorkingDirectory 属性解决
帅得_被人砍 2015-01-29
  • 打赏
  • 举报
回复
帅得_被人砍 2015-01-29
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
你是如何测试无法执行的
双击在服务器里面这个BAT文件都马上生成DHCP保留地址了,调用是没有反应生成的
帅得_被人砍 2015-01-29
  • 打赏
  • 举报
回复
用CMD DOS返回的结果是 此命令需要有效的作用域 IP 地址
於黾 2015-01-29
  • 打赏
  • 举报
回复
你是如何测试无法执行的
帅得_被人砍 2015-01-29
  • 打赏
  • 举报
回复
引用 5 楼 zixingcheng_ 的回复:
不会实际执行了,只是没cmb窗口打印结果而已吧!
这边执行了的话 DHCP服务上会出现那个命令执行后的效果 出现保留地址。
帅得_被人砍 2015-01-29
  • 打赏
  • 举报
回复
引用 7 楼 lkhuge 的回复:
估计是没有权限把 c#直接调用BAT权限并不高
那怎么用.net网站调用有管理员权限的CMD执行命令呢?
帅得_被人砍 2015-01-29
  • 打赏
  • 举报
回复
自己顶一下 ,求大神解决,这个问题困扰几天了
引用 6 楼 Z65443344 的回复:
[quote=引用 2 楼 wenzhao911224 的回复:] 用CMD DOS返回的结果是 此命令需要有效的作用域 IP 地址
说明你这个玩意本身就有错误,你想让它执行啥? 用DOS执行,返回的结果可以在DOS界面显示 你直接执行BAT,结果一闪而过 你用exe调用bat,你期待错误信息给你显示到哪里去??[/quote]但是直接把指令放在DOS里面都可以执行了?就是用程序调用的时候会出现这样的返回值
lkhuge 2015-01-29
  • 打赏
  • 举报
回复
估计是没有权限把 c#直接调用BAT权限并不高
於黾 2015-01-29
  • 打赏
  • 举报
回复
引用 2 楼 wenzhao911224 的回复:
用CMD DOS返回的结果是 此命令需要有效的作用域 IP 地址
说明你这个玩意本身就有错误,你想让它执行啥? 用DOS执行,返回的结果可以在DOS界面显示 你直接执行BAT,结果一闪而过 你用exe调用bat,你期待错误信息给你显示到哪里去??
zixingcheng_ 2015-01-29
  • 打赏
  • 举报
回复
不会实际执行了,只是没cmb窗口打印结果而已吧!

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧