一批正在将有关已停止服务的信息写入带有时间戳的日志文件中。
我注意到执行净停止 “服务” 命令的一些步骤将结果分成不同的行。
echo|set /p=%date%-%time% >> Stop.log & net stop "Service1" >> Stop.log
实际的 Stop.log 结果:
05/04/2019- 9:32:28.87 Service1 is stopping.
Service1 service was stopped successfully.
预期的 Stop.log 结果:
05/04/2019- 9:32:28.87 Service1 is stopping.
05/04/2019- 9:34:21.23 Service1 service was stopped successfully.
答案 0 :(得分:1)
强制net stop
返回一行(更准确的是:将所有输出行合并为一条):
@echo off
(<nul set /p"=%date%-%time% "
for /f "tokens=*" %%a in ('net stop "Service1"') do <nul set /p "=%%a "
echo/
)>> Stop.log
(请注意要在不停止服务的情况下进行尝试的人:而不是net stop "Service1"
尝试dir /b
)
将输出保存为 多行,但将日期和时间放在每行中:
@echo off
for /f "tokens=*" %%a in ('net stop "Service1"') do echo %date%-%time% %%a >> Stop.log
答案 1 :(得分:0)
使用for /F
loop捕获firestore
的输出,并将net stop
放在每一行之前。确保为此启用了delayed expansion(否则您将获得每行相同的日期和时间):
!date!-!time!
请注意,>> "Stop.log" (
for /F "delims=" %%L in ('net stop "Service1"') do (
set "LINE=%%L"
setlocal EnableDelayedExpansion
echo/!DATE!-!TIME! !LINE!
endlocal
)
)
返回的空白行会由于net stop
而丢失。以分号开头的行也是如此,因为这是for /F
的{{1}}字符的默认行。