簡體   English   中英

凈停止“服務”不拆分日志行

[英]net stop "service" not splitting log lines

批處理正在將有關已停止服務的信息寫入帶有時間戳的日志文件中。

我注意到執行net stop "service"命令的一些步驟將結果拆分到不同的行上。

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.

force 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" try dir /b

將輸出保留為多行,但在每一行前添加日期和時間:

 @echo off
 for /f "tokens=*" %%a in ('net stop "Service1"') do echo %date%-%time% %%a >> Stop.log

使用for /F循環捕獲net stop的輸出並在!date!-!time!之前!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而丟失。 以分號開頭的行也是如此,因為這是for /Feol字符的默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM