中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-28 06:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]sc后通道中的findstr不起作用 查看 789 回复 4
楼 主 [已结]sc后通道中的findstr不起作用 发表于 2008-12-17 15:32 ·  中国 上海 浦东新区 电信
初级用户
★★
积分 196
发帖 82
注册 2005-09-26 11:31
20年会员
UID 42842
状态 离线
环境:
Server 2003 SP2 CMD

要做的事:
批处理通过sc来重开远程电脑(列在list.txt中)的dhcp client服务,若有失败,将信息写入error.log
for /F %%i in (List.txt) do sc \\%%i stop dhcp ^| findstr /R "WIN32_EXIT_CODE.*0x0" ^|^| echo "%%i error" 1>>error.log


但error.log中没有记录主机名,而是如下信息;
 ControlService FAILED 1062:

The service has not been started.


执行批处理时画面回显出来的命令确实是我希望得到的,这说明转义符也没用错。
推断是findstr处就已经未生效。将命令提取出来
sc \\PC1 stop dhcp | findstr /R "WIN32_EXIT_CODE.*(0x0)"|| echo "PC1 error" 1>>error.log

就能在error.log中得到预期内容,请大家指教!

[ Last edited by HAT on 2008-12-17 at 17:33 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
yishanju +3 2008-12-17 15:47
2 发表于 2008-12-17 15:59 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
结果贴出来看看:
for /F %%i in (List.txt) do (
sc \\%%i stop dhcp|findstr /R "WIN32_EXIT_CODE.*0x0"||echo>>error.log "%%i error"
)
type error.log
3 发表于 2008-12-17 16:10 ·  中国 上海 浦东新区 电信
初级用户
★★
积分 196
发帖 82
注册 2005-09-26 11:31
20年会员
UID 42842
状态 离线
果然管用,不太懂为什么不用^来转义|呢?
还有下面这一段不懂

||echo>>error.log "%%i error

1.为什么echo后面直接就是>>
2.我应该在论坛里搜索什么来学习这种用法?

[ Last edited by pillow on 2008-12-17 at 16:14 ]
4 Re 3楼 发表于 2008-12-17 17:01 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
管道符用在这里的时候才需要转义:
for xxx ('xxx^|xxx') do (
xxx
)

重定向符号前置有什么好处
http://www.cn-dos.net/forum/viewthread.php?tid=16985
5 发表于 2008-12-17 17:27 ·  中国 上海 浦东新区 电信
初级用户
★★
积分 196
发帖 82
注册 2005-09-26 11:31
20年会员
UID 42842
状态 离线
又掌握2个知识点,开心!
谢谢HAT!!
论坛跳转: