2015-03-25 64 views
1

我有以下文件树批处理脚本来创建一个ZIP文件进行陈述的文件和文件夹列表的

| 
|--/BlueFolder1/ 
|----Blue.txt 
|----Blue2.exe 
|--/BlueFolder2/ 
|----Blue.exe 
|-Blue2.exe 
|-Red.md 
|-Blue.txt 
|-MySuperAwesomeScript.bat 

我需要一个批处理脚本ZIP所有的“蓝色”文件到一个BlueFiles.zip存档。

我对这些技术确实无效,但我认为我应该列出要压缩的文件,或者如果可能的话,将哪些文件声明为IGNORE。

我发现这个批处理脚本的作用像一个魅力,但它不让我选择哪些文件不包含/包含。

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 

SET sourceDirPath=%1 
IF [%2] EQU [] (
    SET destinationDirPath="%USERPROFILE%\Desktop" 
) ELSE (
    SET destinationDirPath="%2" 
) 
IF [%3] EQU [] (
    SET destinationFileName="%~n1%.zip" 
) ELSE (
    SET destinationFileName="%3" 
) 
SET tempFilePath=%TEMP%\FilesToZip.txt 
TYPE NUL > %tempFilePath% 

FOR /F "DELIMS=*" %%i IN ('DIR /B /S /A-D "%sourceDirPath%"') DO (
    SET filePath=%%i 
    SET dirPath=%%~dpi 
    SET dirPath=!dirPath:~0,-1! 
    SET dirPath=!dirPath:%sourceDirPath%\=! 
    SET dirPath=!dirPath:%sourceDirPath%=! 
    ECHO .SET DestinationDir=!dirPath! >> %tempFilePath% 
    ECHO "!filePath!" >> %tempFilePath% 
) 

MAKECAB /D MaxDiskSize=0 /D CompressionType=MSZIP /D Cabinet=ON /D Compress=ON /D UniqueFiles=OFF /D DiskDirectoryTemplate=%destinationDirPath% /D CabinetNameTemplate=%destinationFileName% /F %tempFilePath% > NUL 2>&1 

DEL setup.inf > NUL 2>&1 
DEL setup.rpt > NUL 2>&1 
DEL %tempFilePath% > NUL 2>&1 

在此先感谢。

回答

0

检查this first

尽管Makecab使用deflate算法最终的格式不会被压缩,但驾驶室。 MaxDiskSize=0会将大小设置为其默认值(即软盘) 要保留目录结构,您需要在每个目录更改后设置DestinationDir,以便您需要额外的指令文件。在上面的链接中有一个准备好使用的脚本,将出租目录。您将排除非蓝色文件,您可以编辑指令文件。请检查MAKECAB信息。

这应该只添加蓝色文件到指令。

;@echo off 

;;;;; rem start of the batch part ;;;;; 
; if "%~2" EQU "" (
; echo invalid arguments.For help use: 
; echo %~nx0 /h 
;) 
;for %%a in (/h /help -h -help) do ( 
; if "%~1" equ "%%~a" (
;  echo compressing directory to cab file 
;  echo %~nx0 directory cabfile 
;  echo to uncompress use: 
;  echo EXPAND cabfile -F:* . 
; ) 
;) 
; 
; set "dir_to_cab=%~f1" 
; 
; set "path_to_dir=%~pn1" 
; set "dir_name=%~n1" 
; set "drive_of_dir=%~d1" 
; set "cab_file=%~2" 
; 
; if not exist %dir_to_cab%\ (
; echo no valid directory passed 
; exit /b 1 
;) 

; 
;break>"%tmp%\makecab.dir.ddf" 
; 
;setlocal enableDelayedExpansion 
;for /d /r "%dir_to_cab%" %%a in (*) do (
; 
; set "_dir=%%~pna" 
; set "destdir=%dir_name%!_dir:%path_to_dir%=!" 
; (echo(.Set DestinationDir=!destdir!>>"%tmp%\makecab.dir.ddf") 
; for %%# in ("%%a\*") do (
;  (echo("%%~s#" /inf=no>>"%tmp%\makecab.dir.ddf") 
; ) 
;) 
;(echo(.Set DestinationDir=!dir_name!>>"%tmp%\makecab.dir.ddf") 
; for %%# in ("%~f1\*blue*") do (
;  
;  (echo("%%~s#" /inf=no>>"%tmp%\makecab.dir.ddf") 
; ) 

;makecab /F "%~f0" /f "%tmp%\makecab.dir.ddf" /d DiskDirectory1=%cd% /d CabinetNameTemplate=%cab_file%.cab 
;del /q /f "%tmp%\makecab.dir.ddf" 
;exit /b %errorlevel% 

;; 
;;;; rem end of the batch part ;;;;; 

;;;; directives part ;;;;; 
;; 
.New Cabinet 
.set GenerateInf=OFF 
.Set Cabinet=ON 
.Set Compress=ON 
.Set UniqueFiles=ON 
.Set MaxDiskSize=1215751680; 

.set RptFileName=nul 
.set InfFileName=nul 

.set MaxErrors=1 
;; 
;;;; end of directives part ;;;;; 

但是,如果你想有一个zip格式检查shell.application的解决方案,这将允许添加到已创建的压缩项目。

相关问题