2016-05-13 122 views
1

我想讓這個腳本來備份一個特定的文件夾/文件並壓縮它們,然後將zip文件移動到diff文件夾中。windows server 2008 r2 7z備份腳本

但我不斷收到錯誤。

@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 

一次我運行該腳本,它給出了這樣的消息:

  • 設置環境變量。
  • 找到備份路徑。
  • 已找到Archiver。
  • 複製文件...
  • 歸檔文件... 錯誤:找不到具有指定搜索條件的文件。
  • 清理文件夾超過3天以上的..超過3天超過30天.. 腳本已成功執行舊的
  • 清理文件..
  • 清理歸檔文件舊。你可以關閉這個窗口。

現在變量%ThisService_RootDirectory%是tcadmin的一部分,這是一個遊戲服務器服務,使變量,其中IM執行批處理腳本會變成該變量爲用戶服務 例的實際路徑: %ThisService_RootDirectory % is C:\ TCAFiles \ users \ admin \ 5 \

該腳本將文件複製到所需的文件夾,但它似乎不壓縮文件並將zip移動到所需文件夾。

任何人都可以在這裏請一些援助。

原始來源是https://community.spiceworks.com/topic/482860-batch-script-to-transfer-and-compress

回答

1

這不是你的問題的直接回應,但爲什麼另起爐竈? 所有你需要的是在7zBackup.ps1(這是一個PowerShell腳本,完全是這樣)

+0

感謝您的反饋。我已經看過了。不幸的是,它不適用於我的應用程序。我需要它,所以我的主腳本可以根據執行它的用戶添加變量。它不能是一個多文件腳本,我唯一可以執行腳本的選項是鐵python和批處理/ shell腳本。 –