暗影翔 发表于 2012-4-30 22:43

win的service如何在命令行下自动判断start or stop(让程序自动

标题看着挺难的,我解释一下
用老机子时ep,平常关闭print服务,打印时再打开,不过每次都窗口操作太繁琐了,所以想做bat
本人不是计算机专业的,只会最简单的命令
sc start spooler
打印之后向关闭服务呢,只好在建立另一个bat
sc stop spooler
换了新机子就不这样疼了,所以以上问题就不管了,可是又有了新问题(太ep的lz

用diskeeper这个磁盘整理软件(不愧是ms自带磁盘整理完整版,功能超全,还带自动整理,新版自动识别ssd)
问题就是每次抽取盒插入硬盘,dk都会开启盘上的自动整理,然后想退出硬盘都提示失败,停止diskeeper这个服务才行,然后手动再开启
所以lz的问题来了,如何写个命令自动判断服务处于start or stop,然后根据返回值自动选择操作

真是扭曲的lz呀

白左 发表于 2012-4-30 22:59

鸡蛋灌饼 发表于 2012-4-30 23:01

简单,不做磁盘整理

基本上是瞎折腾

非要折腾的话,去看sc query的帮助,其他的自己办吧

这东西在*nix下好折腾,Win32的bat嘛……

暗影翔 发表于 2012-4-30 23:10

引用第1楼白左于2012-04-30 22:59发表的:
win+r输入cmd /k sc/?
第二个就有:

用法:
        sc <server> <option1> <option2>...
....... images/back.gif

是我没写清楚,标题已改正
我是想让程序自动判断状态,然后根据状态采取相应命令

暗影翔 发表于 2012-4-30 23:14

引用第2楼鸡蛋灌饼于2012-04-30 23:01发表的:
简单,不做磁盘整理

基本上是瞎折腾

非要折腾的话,去看sc query的帮助,其他的自己办吧
....... images/back.gif


sc query                - 枚举活动服务和驱动程序的状态
sc query eventlog       - 显示 eventlog 服务的状态
sc queryex eventlog   - 显示 eventlog 服务的扩展状态
sc query type= driver   - 仅枚举活动驱动程序
sc query type= service- 仅枚举 Win32 服务
sc query state= all   - 枚举所有服务和驱动程序
sc query bufsize= 50    - 枚举缓冲区为 50 字节
sc query ri= 14         - 枚举时恢复索引 = 14
sc queryex group= ""    - 枚举不在组内的活动服务
sc query type= interact - 枚举所有不活动服务
sc query type= driver group= NDIS   - 枚举所有 NDIS 驱动程序

不懂呀,还是没有解决思路

haddy 发表于 2012-5-1 01:16

你绕远了
diskeeper的话
打开diskeeper控制台-菜单栏-操作-配置diskeeper-diskeeper配置属性
属性-新卷检测 取消掉"在所有卷上启用自动碎片整理"这一项前的勾就可以了

当然,以后硬盘分区什么的有改动时,想要自动碎片整理新的卷的话要自己设置

tsukiya17 发表于 2012-5-1 17:15

思路短不懂从cmd获取值…
关了开,开了关

@echo off
sc query diskeeper >%temp%\\scstate.txt
find /i "RUNNING" %temp%\\scstate.txt
if %errorlevel% EQU 0 (
    sc stop diskeeper
) ELSE (
    sc start diskeeper
)
del %temp%\\scstate.txt
exit

暗影翔 发表于 2012-5-1 18:10

回 6楼(tsukiya17) 的帖子

哦哦,ls厉害
%errorlevel%这啥意思

tsukiya17 发表于 2012-5-1 19:23

错误等级
成功返回0,错误一般为1

zerocount 发表于 2012-5-2 04:24

6l这个囧。。。
页: [1]
查看完整版本: win的service如何在命令行下自动判断start or stop(让程序自动