Board logo

标题: 请问这两句批处理可否合为一句? [打印本页]

作者: terse     时间: 2007-8-13 00:29    标题: 请问这两句批处理可否合为一句?

sc query state= all| findstr /r /C:"SERVICE_NAME:">tmpstype.txt
for /f "tokens=2 delims=:" %%i in (tmpstype.txt) do

试着写为:
for /f "tokens=2 delims=:" %%i in ('sc query state= all^| findstr /r /C:"SERVICE_NAME:"') do

运行失败!
作者: ansipeter     时间: 2007-8-13 09:03
试试下面的,是可以的
for /f "tokens=2 delims=:" %%i in ('sc query state^= all^|findstr /r /c:"SERVICE_NAME:"') do echo %i

作者: terse     时间: 2007-8-13 09:50
谢上面 你漏了一‘

[ Last edited by terse on 2007-8-13 at 01:48 PM ]
作者: terse     时间: 2007-8-13 13:49
for /f "tokens=2 delims=:" %%i in ('sc query state^= all^| findstr /r /C:"SERVICE_NAME"') do (
for /f "tokens=4 delims=:_ " %%a in ('sc qc %%i^| findstr  "START_TYPE"') do

发现如果%%i含有空格的话  会跳过  怎么回事呢? 加""更不行了!
作者: 不得不爱     时间: 2007-8-13 14:47
应该是
"tokens=4 delims=:_ "
引起的吧,不知道你到底要什么结果
作者: terse     时间: 2007-8-13 16:33


  Quote:
Originally posted by 不得不爱 at 2007-8-13 14:47:
应该是
"tokens=4 delims=:_ "
引起的吧,不知道你到底要什么结果

我想可能不是这个原因!
用来备份系统当前服务,
"tokens=4 delims=:_ " 这个是后面一句的啊
假使前面的%%i 用TXT导出 部分如下:
COMSysApp
Crypkey License
CryptSvc
现在的问题是 sc qc COMSysApp  可以运行
现在的问题是 sc qc CryptSvc  可以运行
现在的问题是 sc qc Crypkey License  这样就不能运行
命令行中运行sc qc "Crypkey License"  这样可以运行
但放在for /f "tokens=4 delims=:_ " %%a in ('sc qc "%%i"^| findstr  "START_TYPE"') do 这里%%i加""全部不行 %%i不加""有空格的不行
作者: terse     时间: 2007-8-13 17:40
终于解决空格问题:
@echo off&color 0B
echo 正在备份服务  请稍候....
for /f "delims=" %%i in ('Date /T') do set FILENAME=%%i
     for /f "tokens=1,2 delims=:" %%i in ('TIME /T') do set FILENAME=%FILENAME%%%i点%%j分
echo 备份当前服务状态到%FILENAME%文件
echo @echo off^&color 0B>"%FILENAME%.bat"
echo echo 正在恢复%FILENAME%的服务备份>>"%FILENAME%.bat"
for /f "tokens=1,* delims= " %%i in ('sc query state^= all^| findstr /rc:"SERVICE_NAME"') do (
    for /f "tokens=4 delims=:_ " %%a in ('sc qc "%%j"^| findstr /rc:"START_TYPE"') do (
echo sc config "%%j" start= %%a^>nul2^>nul >>"%FILENAME%.bat"
  )
)
echo pause >>"%FILENAME%.bat"
for /f "delims=:" %%a in ('findstr /n . "%FILENAME%.bat"') do set /a mn=%%a-3 2>nul
echo 备份当前服务 %mn% 项
echo               %DATE% %TIME%
pause

[ Last edited by terse on 2007-8-13 at 09:48 PM ]