为什么要使用命令行与服务交互呢?是要用户手工操作命令行么?
曲线救国一下:
1.写一个服务
2.写一个或多个控制台程序与服务交互,这个交互方式就比较多了....
3.在命令行中调用写好的控制台程序,传入相应的参数。
依照你给的例子:写一个SERVICE服务,
在写一个download.exe,接受url参数,并传入SERVICE服务中,
命令行:download.exe http://www.XXXX.com
或者写一个 consol.exe 接受download等多个命令,download命令格式为[download:URL]
命令行:consol.exe download:http://www.XXXX.com
把consol.exe放系统目录里面或修改path参数,就可以简写成consol download:http://www.XXXX.com
那这控制台又如何与该windows服务交互呢
using (StreamWriter writer = new StreamWriter("C:\\TEST.txt", true, Encoding.UTF8))
{
string input = Console.ReadLine();
int i=0;
while (i <= 10)
{
writer.WriteLine("这是第"+i+"行:"+input);
i++;
}
}
Console.Read();
然后再命令行输入***.exe 3232323结果程序没有执行,请问大侠如何给控制台传参啊?
@baoj2010: 内存共享、TCP、WCF。。。这就是常规的进程间通讯问题....
@baoj2010: C#的控制台程序,main函数有个数组参数,那里面就是你调用EXE时后面传的参数,以空格分割,至于运行过程中的控制台输入才需要用到Console.Read()或Console.ReadLine(),而且是需要while等循环来判断读入的数据是否正确的
@baoj2010: 你去搜一下控制台程序的例子了解一下吧
最简单的方法应该直接使用powershell就搞定了。
如果只是启动或关闭服务,只需要用net start [Service1]就可以了。
如果需要让windows自动执行Dos,可以通过windows服务来实现。
方法: 将命令行写成bat文件,再用Windows服务调用bat。
详见:使用C#创建WindowsService(Windows服务,附源码):定期执行Dos命令或Bat(批处理)文件
http://download.csdn.net/detail/guo2001china/1760997
服务名:epAgentService
运行环境:Framework2.0
文件说明:
install.bat 安装服务
UnInstall.bat 删除服务
config.ini 配置文件
配置文件说明:
[settings]
batPath BAT文件路径,例:d:\1.bat
[intervalsetting]
interval=5 间隔时间,单位:秒。例:5,表示5秒钟执行一次。
我的需求不是单纯的启动停止服务,而是想通过命令行与服务交互