中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]sc后通道中的findstr不起作用
作者:
标题: [已结]sc后通道中的findstr不起作用 上一主题 | 下一主题
pillow
初级用户





积分 196
发帖 82
注册 2005-9-26
状态 离线
『楼 主』:  [已结]sc后通道中的findstr不起作用

环境:
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中没有记录主机名,而是如下信息;
[SC] 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 ]

   此帖被 +3 点积分     点击查看详情   
评分人:【 yishanju 分数: +3  时间:2008-12-17 15:47


2008-12-17 15:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

结果贴出来看看:
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




2008-12-17 15:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pillow
初级用户





积分 196
发帖 82
注册 2005-9-26
状态 离线
『第 3 楼』:  

果然管用,不太懂为什么不用^来转义|呢?
还有下面这一段不懂
||echo>>error.log "%%i error
1.为什么echo后面直接就是>>
2.我应该在论坛里搜索什么来学习这种用法?

[ Last edited by pillow on 2008-12-17 at 16:14 ]

2008-12-17 16:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  Re 3楼

管道符用在这里的时候才需要转义:
for xxx ('xxx^|xxx') do (
  xxx
)

重定向符号前置有什么好处
http://www.cn-dos.net/forum/viewthread.php?tid=16985



2008-12-17 17:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pillow
初级用户





积分 196
发帖 82
注册 2005-9-26
状态 离线
『第 5 楼』:  

又掌握2个知识点,开心!
谢谢HAT!!

2008-12-17 17:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: