【问题标题】:Creating a batch file to back up a specified folder创建批处理文件以备份指定文件夹
【发布时间】:2009-09-24 21:52:39
【问题描述】:

我实际上对这个批处理文件很陌生。我知道至少了解基本命令很重要。如何执行以下操作?

  • 压缩指定文件夹。
  • 将文件夹移至其他位置。
  • 压缩时,ZIP 文件名将是当前日期和 如果有另一个同名的压缩文件,它应该命名为20090924-2。

PS7-Zip 作为存档软件安装在我的电脑上。

【问题讨论】:

  • 你没时间的评论有点挑衅,但我没时间回复。

标签: windows batch-file zip backup 7zip


【解决方案1】:

下面列出的批处理脚本可以做到(我已经测试过了 它符合规范)。要压缩的目录和 move 被指定为其父目录和名称 目录(PARENT_FOLDERTOZIP 和 FOLDERTOZIP 在 开始) - 我不知道如何复制整个 目录(我认为 XCOPY 只能复制 目录和子目录。)。复制位置是 指定为 FOLDERTARGETLOCATION,以及要放置的目录 中的压缩文件指定为 ZipDIR。

7-Zip 的位置是通过 SEVENZIP_EXE 配置的。

另请注意,获取所需的当前日期 格式取决于区域中的短日期格式 设置。我列出了三个不同的版本 ISO-8601,中欧和美国。 列表适用于美国(“set FDATE=”行)。如果一个 需要不同的,然后只需从其中一个复制粘贴 其他两个。

也就是说要注意这种东西很多 使用PerlPythonPowerShell 更容易。


@echo off
@title=Folder zip and move...

rem Parameters
  rem Folder to zip and move
    set PARENT_FOLDERTOZIP=T:\to delete
    set FOLDERTOZIP=Folder to Compress

  rem Target folder for moving the input folder to.
    set FOLDERTARGETLOCATION=s:\move Here

  rem Where to place compressed folders
    set ZIPDIR=D:\toDelete\2009-09-24a


rem Configuration
  set SEVENZIP_EXE=D:\Program Files\7-Zip\7z.exe


rem =================== Date ==============================================
rem There is no universal way inside batch itself to get a
rem date that is independent of regional settings (but is
rem quite trivial if an external program or script
rem (Perl/Python) is available).
rem
rem For short date formats:
rem
rem   -------------------------------------------------------
rem
rem   ISO-8601:
rem     0123456789
rem     yyyy-MM-dd/     E.g.: 2009-09-24
rem
rem     set FDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
rem
rem   -------------------------------------------------------
rem
rem   Central european:
rem     0123456789
rem     dd/MM/yyyy     E.g.: 24/09/2009
rem
rem     set FDATE=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
rem
rem   -------------------------------------------------------
rem
rem   US:
rem
rem     0123456789
rem     MM/dd/yyyy     E.g.: 09/24/2009
rem
rem     set FDATE=%DATE:~6,4%%DATE:~0,2%%DATE:~3,2%

set FDATE=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
set ZIPFILE=%ZIPDIR%\%FDATE%.7z

set FOLDERTOZIP_FULLPATH=%PARENT_FOLDERTOZIP%\%FOLDERTOZIP%
mkdir %FOLDERTARGETLOCATION%


rem Does a zip file already exist?
if exist "%ZIPFILE%" GOTO L_ZIPFILE_EXISTS
GOTO L_ZIPFILENAME_OK


rem Find a compressed file that does not already exist.
:L_ZIPFILE_EXISTS
set RNUM=0
:L_TRYANOTHER
set /a RNUM=%RNUM% + 1
set ZIPFILE=%ZIPDIR%\%FDATE%-%RNUM%.7z
echo Candidate: %ZIPFILE% ...
if exist "%ZIPFILE%" GOTO L_TRYANOTHER


rem Zip the folder!
:L_ZIPFILENAME_OK
"%SEVENZIP_EXE%"  a %ZIPFILE%   "%FOLDERTOZIP_FULLPATH%"

if exist "%ZIPFILE%" GOTO L_OKZIP
GOTO L_ERROREND


:L_OKZIP
rem Move folder: copy, then delete source.
set DEST_FOLDER=%FOLDERTARGETLOCATION%\%FOLDERTOZIP%
mkdir "%DEST_FOLDER%"
xcopy /Y /S "%FOLDERTOZIP_FULLPATH%"\*.*   "%DEST_FOLDER%"\
rmdir /S "%FOLDERTOZIP_FULLPATH%"
GOTO L_END


:L_ERROREND
echo 7-Zipping failed !!!


:L_END

pause

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-18
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多