我有一个脚本来停止和启动IIS服务,在这个脚本中,它将定义日志和目录。创建的日志是增长文件,因为它具有相同的名称目录(下面的代码):
@ECHO About to stop the StackProcess
cd %windir%\system32\inetsrv
appcmd stop apppool /apppool.name:StackProcess
echo %date% %time% - Service Stopped Successfully > C:\Logs\StackProcess_IISrestart.log
@ECHO StackProcess Stopped
TIMEOUT /t 05 /nobreak
@ECHO StackProcess
cd %windir%\system32\inetsrv
appcmd start apppool /apppool.name:StackProcess
echo %date% %time% - Service Restarted Successfully > C:\Logs\StackProcess_IISrestart.log
@ECHO StackProcess Restarted
我的下一步是创建一个日志文件,该文件将根据时间戳命名,如“StackProcess IIS restart -YYYYMMDD”,此日志文件也将增长。
echo off
set CUR_YYYY=%date:~10,4%
set CUR_MM=%date:~4,2%
set CUR_DD=%date:~7,2%
set SUBFILENAME=StackProcess%CUR_YYYY%%CUR_MM%%CUR_DD%
@ECHO About to stop the StackProcess
cd %windir%\system32\inetsrv
appcmd stop apppool /apppool.name:StackProcess
echo %date% %time% - Service Stopped Successfully > C:\Logs\%SUBFILENAME%.log
@ECHO StackProcess Stopped
TIMEOUT /t 05 /nobreak
@ECHO StackProcess
cd %windir%\system32\inetsrv
appcmd start apppool /apppool.name:StackProcess
echo %date% %time% - Service Restarted Successfully > C:\Logs\%SUBFILENAME%.log
@ECHO StackProcess Restarted
但是这个代码仅适用于文件将覆盖现有文件的情况,这意味着日志文件不会在当天增长。当我希望它增长而不是这个时,有什么我想念的代码吗?帮帮我,谢谢。
如果我理解正确,您似乎无法理解重定向运算符的工作原理。 >
从新的>>
开始追加。只需更改为适当的操作员即可解决您的问题。
@Echo Off
Set "log="
For /F "Tokens=1-3Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
)Do If Not Defined log Set "log=StackProcess%%A%%B%%C.log"
Echo Stopping the StackProcess
"%__AppDir__%InetSrv\AppCmd.exe" Stop AppPool /apppool.name:StackProcess
Echo %DATE% %TIME% - Service Stopped Successfully>"%log%"
Echo StackProcess Stopped
Timeout 5 /NoBreak>Nul
Echo Starting the StackProcess
"%__AppDir__%InetSrv\AppCmd.exe" Start AppPool /apppool.name:StackProcess
Echo %DATE% %TIME% - Service Restarted Successfully>>"%log%"
Echo StackProcess Restarted
Timeout 2 /NoBreak>Nul
请注意,虽然我可能在上面的示例中做了一些改进,但您正在记录“成功”消息,而没有实际验证启动和停止过程是否成功。我将留给您决定是否要扩展您的代码以满足此类验证。