windows server 2008 r2 7z备份脚本

windows server 2008 r2 7z备份脚本,windows,batch-file,backup,7zip,Windows,Batch File,Backup,7zip,我试图让这个脚本备份一个特定的文件夹/文件,并将其压缩,然后将压缩移动到一个不同的文件夹 但我一直在犯错误 @ECHO off SETLOCAL ECHO + Setting up environment variables. SET BACKPATH=%ThisService_RootDirectory%temp\ SET ARCPATH=C:\Program Files\7-Zip\7z.exe SET ARCPARAMS=a -y SET DAYSTOKEEP=3 SET ARCHIVE

我试图让这个脚本备份一个特定的文件夹/文件,并将其压缩,然后将压缩移动到一个不同的文件夹

但我一直在犯错误

@ECHO off
SETLOCAL

ECHO + Setting up environment variables.
SET BACKPATH=%ThisService_RootDirectory%temp\
SET ARCPATH=C:\Program Files\7-Zip\7z.exe
SET ARCPARAMS=a -y
SET DAYSTOKEEP=3
SET ARCHIVE_DAYSTOKEEP=30
SET SOURCEPATH=%ThisService_RootDirectory%MPMissions
SET DEST_PATH=%ThisService_RootDirectory%Backups
SET BACKUP_DEST=%date:~-7,2%-%date:~4,2%-%date:~-4,4%

IF NOT EXIST "%BACKPATH%" (
ECHO ! Backup Path not found, exiting.
GOTO END
) ELSE (
ECHO * Backup Path Found.
)

IF NOT EXIST "%ARCPATH%" (
ECHO ! Archiver not found, exiting.
GOTO END
) ELSE (
ECHO * Archiver Found.
)


ECHO * Copying Files...
xcopy "%SOURCEPATH%\Documents" "%BACKPATH%\%BACKUP_DEST%\MPMissions" /v /e /s /i /y 1>NUL 2>NUL

ECHO * Archiving files...
CD /D "%BACKPATH%"
FOR /f %%a IN ('FORFILES /P %BACKPATH% /C "cmd /c if @isdir==TRUE echo @file" /D -%DAYSTOKEEP%') DO (
IF NOT EXIST %%a.7z (
    "%ARCPATH%" %ARCPARAMS% %%a.7z %BACKPATH%\%%a\*.* 1>NUL 2>NUL
    copy %%a.7z %DEST_PATH% 1>NUL 2>NUL
    del %%a.7z 1>NUL 2>NUL
)
)

ECHO * Cleaning folders older than %DAYSTOKEEP% days..
FORFILES /P %BACKPATH% /C "cmd /c if @isdir==TRUE rmdir /s /q @file" /D -%DAYSTOKEEP% 1>NUL 2>NUL

ECHO * Cleaning files older than %DAYSTOKEEP% days..
FORFILES /P %BACKPATH% /M *.7z /C "cmd /c if @isdir==FALSE del @file" /D -%DAYSTOKEEP% 1>NUL 2>NUL

ECHO * Cleaning archives files older than %ARCHIVE_DAYSTOKEEP% days..
FORFILES /P %DEST_PATH% /M *.7z /C "cmd /c if @isdir==FALSE del @file" /D -%ARCHIVE_DAYSTOKEEP% 1>NUL 2>NUL


:END
ENDLOCAL
运行脚本后,它会显示以下消息:

  • 设置环境变量
  • 找到备份路径
  • 阿奇弗找到了
  • 正在复制文件
  • 存档文件。。。 错误:未找到具有指定搜索条件的文件
  • 正在清理超过3天的文件夹
  • 正在清理超过3天的文件
  • 正在清理超过30天的存档文件。。 脚本已成功执行。你可以关上这个窗户
现在变量%ThisService\u RootDirectory%是tcadmin的一部分,tcadmin是一个游戏服务器服务,因此执行批处理脚本的变量会将该变量转换为用户服务的实际路径 例子: %此服务\u根目录% 是 C:\TCAFiles\users\admin\5\

脚本将文件复制到所需的文件夹中,但似乎没有压缩文件并将压缩移动到所需的文件夹中

这里有人能帮忙吗


原始资料来源于

这不是对你问题的直接回答,但为什么要重新发明轮子?
您所需要的只是(一个powershell脚本,它可以做到这一点)

谢谢您的反馈。我已经调查过了。不幸的是,它将不适用于我的应用程序。我需要它,以便我的主脚本可以根据执行它的用户添加变量。它不能是多文件脚本,我执行该脚本的唯一选项是iron python和batch/shell脚本。