2017-07-10 21 views
0

我有一个批处理文件,用于停止服务并在文件夹中创建.log文件。现在,在日志文件中应该有停止日期/开始日期和停止时间/服务的开始时间以及服务名称。我怎样才能做到这一点?在批处理文件中打印开始/结束时间和服务名称

@echo off 
sc stop tapisrv 
if ERRORLEVEL 1 goto error 
pause 
if exist "C:\AliCanDirik" echo A file name AliCanDirik already exists in 
directory C:\ 
if not exist "C:\AliCanDirik" mkdir C:\AliCanDirik 
echo AliCanDirik is created in directory C:\ 
echo %UserName% > odev.log 
pause 

我改变它是这样的;

@echo off 
sc start tapisrv 
if ERRORLEVEL 1 goto error 
pause 
sc stop tapisrv 
if ERRORLEVEL 1 goto error 
pause 
if exist "C:\AliCanDirik" echo A file name AliCanDirik already exists in 
directory C:\ 
if not exist "C:\AliCanDirik" mkdir C:\AliCan 
echo AliCanDirik is created in directory C:\ 

set logfile=C:\AliCanDirik\odev.log 
echo Service name= tapisrv Date= %date% Time= %time% Username= %username% >> 
%logfile% 
tapisrv -options oas >> %logfile% 
pause 

它在.log文件中创建文件和.log文件并获取时间&日期。但我需要分别学习开始时间和停止时间。 我猜是找到了它;

@echo off 
sc start tapisrv 
if ERRORLEVEL 1 goto error 
set starttime=%time% 
set startdate=%date% 
pause 
sc stop tapisrv 
if ERRORLEVEL 1 goto error 
set stoptime=%time% 
set stopdate=%date% 
pause 
if exist C:\AliCanDirik (
    echo A file name AliCanDirik already exists in directory C:\ 
)else (
    mkdir C:\AliCanDirik 
    echo AliCanDirik is created in directory C:\ 
) 

set logfile=C:\AliCanDirik\odev.log 
echo Service name= tapisrv Start Date= %startdate% Start Time= %starttime% 
Username= %username% >> %logfile% 
echo Service name= tapisrv End Date= %stopdate% End Time= %stoptime% 
Username= %username% >> %logfile% 

暂停

+0

你的代码是错误的,'“目录”不被识别为一个内部或外部命令,可操作的程序或批处理file.'而不是两个。如果是你应该使用'如果COND(dothis)其他(找时间做) '见http://ss64.com/nt/if.html – LotPings

+0

我修复了它。谢谢 –

回答

0

目前还不完全清楚你打算做什么。

这批如果成功&&别人,也有条件执行或失败前面的命令类似评估错误级别的||使用。

@echo off 
if exist "C:\AliCanDirik" (
    echo A file/folder name AliCanDirik already exists in directory C:\ 
) else (
    mkdir C:\AliCanDirik 
    echo AliCanDirik is created in directory C:\ 
) 
set "logfile=C:\AliCanDirik\odev.log" 

sc start tapisrv && (
    >> "%logfile%" Echo started Service name=tapisrv Date=%date% Time=%time% Username=%username% 
) || goto error 
pause 

sc stop tapisrv && (
    >> "%logfile%" Echo stopped Service name=tapisrv Date=%date% Time=%time% Username=%username% 
) || goto error 
pause 

Rem afaik tapisrv is a dll, you can't run it this way. 
>> "%logfile%" tapisrv -options oas 
pause 
0

嗯,这很容易。 %DATE%包含日期,%TIME%包含时间和服务显然被称为tapisrv。您可以结合这样的信息:ECHO %DATE% %TIME% tapisrv。要将其写入odev.log文件,只需添加>>odev.log。而已。但要小心:echo %UserName% > odev.log将始终“删除”旧文件并创建一个新文件。 >覆盖文件。如果你想附加文本,你应该使用>>

@echo off 
sc stop tapisrv 
if ERRORLEVEL 1 goto error 
pause 
if exist "C:\AliCan" echo A file name AliCan already exists in 
directory C:\ 
if not exist "C:\AliCan" mkdir C:\AliCan 
echo AliCan is created in directory C:\ 
echo %UserName% > odev.log 
ECHO %DATE% %TIME% tapisrv>>odev.log 
pause 
+0

感谢您的回复。我试过了,但看不到文件夹中的任何.log文件。 –

+0

真的有一行只包含'目录C:\\'?此行应该会导致错误。 – MichaelS

+0

它没有问题。只需要分别知道时间和日期。我的意思是tapisrv的开始时间和tapisrv的结束时间。 –

相关问题