我试图让这个脚本来备份一个特定的文件夹/文件,并将其压缩,然后将压缩文件移动到一个diff文件夹中。
但我不断收到错误。
@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
一旦我运行脚本,它会给出这个消息:
现在,variables%ThisService_RootDirectory%是游戏服务器服务tcadmin的一部分,因此执行批处理脚本的variables会将该variables转换为用户服务示例的实际path:%ThisService_RootDirectory%是C:\ TCAFiles \ users \ ADMIN \ 5 \
该脚本将文件复制到所需的文件夹,但似乎不压缩文件并将zip移动到所需的文件夹。
任何人都可以在这里请一些协助。
原始来源是在https://community.spiceworks.com/topic/482860-batch-script-to-transfer-and-compress
这不是对你的问题的直接回应,而是为什么重新发明轮子? 所有你需要的是在7zBackup.ps1 (一个PowerShell脚本,正是这个)