Powershell 脚本从多个位置复制过去 4 小时内更改的文件

Powershell 脚本从多个位置复制过去 4 小时内更改的文件

我们在服务器上有多个生成日志的路径。日志配置为在某些日志之后自动轮换。我们希望将过去 4 小时内更改的日志复制到另一个驱动器进行备份,然后将其压缩。为了安排时间,我们将在任务计划程序中配置一个计划,每 4 小时运行一次。

我们尝试了批处理脚本,但它无法随着时间搜索最后修改的文件。

有人能帮忙吗?我们还想将子文件夹从源复制到目标。

下面是我正在使用的脚本,它以小时为单位提取每日日志。我想复制过去 4 小时的日志,而不覆盖到目标,即使在源中找到同名文件。

:: Below commands will check for existing files with name *ops*.zip, if found it will moved to L:\Archive folder

@ECHO OFF
::Destination folder, where log files compressed in zip will be copied
mkdir "L:\Archive"
SET DestinationDir=L:\Logs
::Archive folder, previous runs will be saved here
SET ArchiveDir=L:\Archive
SET FilePatternName=*ops*.zip

ECHO Zip files archiving......
FOR %%A IN ("%DestinationDir%\%FilePatternName%") DO (
ECHO F | XCOPY /Y /F "%%~A" "%ArchiveDir%\"
DEL /Q /F "%%~A"
)

SET Date=%date:~4%
set fdate=%Date:~0,2%%Date:~3,2%%Date:~6,4%
set time=%time::=%


ECHO Starting to copy the log files ......


ECHO Copying AdvancedFeatureServer logs ...
forfiles /P "E:\WORK\ops\AdvancedFeatureServer\LogFile" /s /D +%Date% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M  @file /D -%Date% && (cmd /c xcopy /S /Y /F @path %DestinationDir%\ops_logs_%fdate%\%computername%\AdvancedFeatureServer\LogFile\)"
forfiles /P "E:\WORK\ops\Advice\LogFile" /s /D +%Date% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M  @file /D -%Date% && (cmd /c xcopy /S /Y /F @path %DestinationDir%\ops_logs_%fdate%\%computername%\Advice\LogFile\)"
forfiles /P "E:\WORK\ops\Advice\Outbound" /s /D +%Date% /C "cmd /C if @isdir==FALSE 2> nul forfiles /M  @file /D -%Date% && (cmd /c xcopy /S /Y /F @path %DestinationDir%\ops_logs_%fdate%\%computername%\Advice\Outbound\Alert\)"



:: Below commands will Zip the folder


ECHO Zipping...

L:
cd L:\Logs


for /d %%X in (*ops*) do "C:\Program Files\7-Zip\7z.exe" a "ops_logs_%fdate%_%time%.zip" "%%X\"
for /d %%X in (*ops*) do RMDIR "%%X" /S /Q


pause

相关内容