Я нашел сообщение, где пользователь хотел скопировать 2 самые последние папки журналов в другое место , на которое ответил Mofi . Я пытаюсь сделать что-то подобное, за исключением того, что у меня есть папка с несколькими типами журналов устранения неполадок Я попытался скопировать только определенные журналы со смешанным успехом. Я могу скопировать два из самых последних журналов для двух типов журналов, но безуспешно с другими. Также кажется, что использование паузы в пакете не останавливает ее, чтобы увидеть какие-либо сообщения об ошибках.
Мне удалось скопировать журнал localhost и журнал сервера. Однако журнал диагностики не копирует или любые другие журналы в папке, которую я пытаюсь переместить. Все файлы в папке имеют расширение .log, но после определенного размера переходят в формат name.log.date, но это не имеет значения для журналов localhost и server. Я пытался ставить паузы в конце каждого блока и даже внутри блоков, но пакет не останавливается, поэтому у меня нет шанса увидеть какие-либо ошибки.
@echo off
mkdir N:\Copy_logs
setlocal EnableExtensions EnableDelayedExpansion
REM -----------------
REM localhostlog
REM -----------------
set FileCount=02
set "SourcePath=D:\applications\server\log"
set "TargetPath=N:\Copy_logs"
set "SourcePath=%SourcePath:/=\%"
set "TargetPath=%TargetPath:/=\%"
if not "%SourcePath:~-1%" == "\" set "SourcePath=%SourcePath%\"
if not "%TargetPath:~-1%" == "\" set "TargetPath=%TargetPath%\"
for /F "eol=| delims=" %%I in ('dir "%SourcePath%/localhost_access_log.*" /A-D /B /O-D 2^>nul') do (
%SystemRoot%\System32\xcopy.exe "%SourcePath%%%I" "%TargetPath%" /C /I /Q /H /R /Y >nul
set /A FileCount-=1
if !FileCount! == 0 goto serverLog
)
REM -----------------
REM serverLog
REM -----------------
:serverLog
set FileCount=02
set "SourcePath=D:\applications\server\log"
set "TargetPath=N:\Copy_logs"
set "SourcePath=%SourcePath:/=\%"
set "TargetPath=%TargetPath:/=\%"
if not "%SourcePath:~-1%" == "\" set "SourcePath=%SourcePath%\"
if not "%TargetPath:~-1%" == "\" set "TargetPath=%TargetPath%\"
for /F "eol=| delims=" %%I in ('dir "%SourcePath%/server.*" /A-D /B /O-D 2^>nul') do (
%SystemRoot%\System32\xcopy.exe "%SourcePath%%%I" "%TargetPath%" /C /I /Q /H /R /Y >nul
set /A FileCount-=1
if !FileCount! == 0 goto diagLog
)
REM -----------------
REM Diagnostic Log
REM -----------------
:diagLog
set FileCount=02
set "SourcePath=D:\applications\server\log"
set "TargetPath=N:\Copy_logs"
set "SourcePath=%SourcePath:/=\%"
set "TargetPath=%TargetPath:/=\%"
if not "%SourcePath:~-1%" == "\" set "SourcePath=%SourcePath%\"
if not "%TargetPath:~-1%" == "\" set "TargetPath=%TargetPath%\"
for /F "eol=| delims=" %%I in ('dir "%SourcePath%/diagnostic.*" /A-D /B /O-D 2^>nul') do (
%SystemRoot%\System32\xcopy.exe "%SourcePath%%%I" "%TargetPath%" /C /I /Q /H /R /Y >nul
set /A FileCount-=1
if !FileCount! == 0 goto :FileCopyDone
)
:FileCopyDone
endlocal
Ожидаемый результат - копирование двух самых последних файлов каждого типа журнала. Первые два типа журналов копируются, но любой из оставшихся журналов не копируется.