创造的一批文件备份一个指定文件夹
-
16-09-2019 - |
题
我实际上是相当新的,这种批文件事情。我知道重要的是要知道至少基本的指令。我该怎么做以下?
- 荏苒指定文件夹。
- 文件夹移动到另一个地方。
- 当压缩,拉链文件的名字将是现在的日期 如果有另一个压缩文件具有相同的名称,它应该命名的20090924-2.
PS: 7-Zip 安装在我的电脑作为档案软件。
解决方案
批脚下面列出将这样做(我已经测试过它 和它的工作,以规范)。该目录和邮编 移动指定为其父的目录和名称 目录(PARENT_FOLDERTOZIP和FOLDERTOZIP在 开始)-我不知道怎么复制整个 目录(我认为XCOPY只能复制的内容 目录和子目录。).拷贝的位置 指定为FOLDERTARGETLOCATION,并将目录的地方 压缩的文件中被指定为ZIPDIR.
这位7-Zip配置通过SEVENZIP_EXE.
还注意到,越来越目前的日期在所需要的 格式取决于短期的格式在区域 设置。我已经列出了三个不同版本 ISO8601、中欧和U.S.A.活动的 清单是为U.S.A.("集FDATE="line)。如果一个 不同的需要,然后只是复制粘贴从一个的 其他两个。
这说,应该指出,这种事情是很多 容易 Perl, 蟒蛇 或 PowerShell.
@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
不隶属于 StackOverflow