Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在批处理文件中打印开始/结束时间和服务名称_Batch File - Fatal编程技术网

Batch file 在批处理文件中打印开始/结束时间和服务名称

Batch file 在批处理文件中打印开始/结束时间和服务名称,batch-file,Batch File,我有一个批处理文件,用于停止服务并在文件夹中创建.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:\AliCanDi

我有一个批处理文件,用于停止服务并在文件夹中创建.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%

暂停一下,这很简单<代码>%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

我还不完全清楚你打算做什么

此批处理在上一个命令的成功
&&
或失败
|
时使用if-else和条件执行,类似于评估errorlevel

@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

谢谢你的回复。我试过了,但在文件夹中看不到任何.log文件。真的有一行只包含“目录C:\”吗?这一行应该会导致错误。没有问题。只需要分别知道时间和日期。我指的是TAPISV的开始时间和TAPISV的结束时间。您的代码有错误,
'directory'无法识别为内部或外部命令、可操作程序或批处理文件。
您应该使用
If cond(dothis)else(dothat)
请参阅我修复了它。非常感谢。