Batch file 为自动删除旧IIS日志文件编写批处理文件
每当我想删除共享Web服务器上的旧IIS日志文件时,我都会在CMD上运行以下命令:Batch file 为自动删除旧IIS日志文件编写批处理文件,batch-file,iis-7,command-prompt,Batch File,Iis 7,Command Prompt,每当我想删除共享Web服务器上的旧IIS日志文件时,我都会在CMD上运行以下命令: for /R C:\HostingSpaces %f in (u_ex*.log) do del /q "%~ff" 它搜索IIS日志文件并将删除所有这些文件。当然,它不能删除当天的日志文件,因为它们已经在IIS中打开,无法删除。 它显示了在命令提示符控制台中逐个删除日志文件的进度 我需要设置一个计划任务来运行一个BAT文件,以便每天自动执行此任务。 我制作了一个bat文件,并在其中粘贴了以下命令: 对于/R
for /R C:\HostingSpaces %f in (u_ex*.log) do del /q "%~ff"
它搜索IIS日志文件并将删除所有这些文件。当然,它不能删除当天的日志文件,因为它们已经在IIS中打开,无法删除。
它显示了在命令提示符控制台中逐个删除日志文件的进度
我需要设置一个计划任务来运行一个BAT文件,以便每天自动执行此任务。
我制作了一个bat文件,并在其中粘贴了以下命令:
对于/R C:\hostingspace%f,在(u_ex*.log)do del/q“%~ff”中
但是当我运行批处理文件时,什么都没有发生,也看不到任何结果和操作。
如何编写批处理文件以运行此命令
非常感谢你的帮助。
谢谢您需要在批处理文件中为for循环使用%%A,而不是在命令提示下使用%A
del C:\HostingSpaces\u_ex*.log /s
更简单。出现错误的原因是当前日志是在IIS中打开的 IIS保持当前日志的打开状态,并不断在其上写入。因此,您将无法删除当天的日志 这是对我有效的命令。我的网站都放在名为
hostingspace
的文件夹中,我这样做是为了删除所有日志文件(只有当天的日志会保留在末尾)
u_ex*.log
是我的日志的语法,您的日志可能有其他语法,因此请注意这一点。我强烈建议使用forfiles
命令执行任务:
forfiles -p C:\inetpub\logs\LogFiles\ -s -m *.log -d -180 -c "cmd /C DEL @File"
开关说明:
- -s或/s:递归到所有子文件夹
- -p或p:路径
- -m或/m:文件掩码
- -d或/d:天数(-180=早于180天)
- -c或/c:要执行的命令
有关一个像样的Powershell替代方案,请参阅:有关如何正确减少IIS LogFiles文件夹的其他建议,这是我在该主题上写的。感谢您的评论。但是您的命令将不起作用,因为日志文件不在hostingspace目录下,并且它们位于hostingspace目录下2级的子目录中。谢谢你的提示。所以你的意思是我需要使用%%f而不是%fIt,但仍会将其删除2级。只有当您在其他地方有类似的命名文件时,您才会这样做。我面临的问题是“进程无法访问文件,因为它正被另一个进程使用”。我已通过停止服务以及explorer.exe的结束进程尝试了很多,请在这方面紧急帮助我。我在我的实时服务器上面临空间问题,很多网站都在运行
forfiles -p C:\inetpub\logs\LogFiles\ -s -m *.log -d -180 -c "cmd /C DEL @File"