-1
@echo off
setlocal enabledelayedexpansion
rem initialize all variables
set counter=1
set groupnumber=1
rem change groupcount value if you want a different number of files per zip
set groupcount=3
set zipfilenamePrefix=archive
rem start looping over...
for %%f in (*) do (
    if not "%%f"=="%~nx0" (
        set fileList=!fileList! %%f
        set /a reminder=!counter!%%!groupcount!
        if !reminder! equ 0 (
            set zipfilename=archive!groupnumber!.tz
            echo Zipping files: !fileList! into !zipfilename!
            rem your zipping utility goes here: input = !fileList! and output = !zipfilename!
            set /a groupnumber=!groupnumber!+1
            set fileList=
        )
        set /a counter=counter+1
    )
)
rem there could be some left over files - last group may be less than 3 files
if !reminder! equ 0 (
    set zipfilename=archive!groupnumber!.tz
    echo Zipping into files: !fileList! !zipfilename!
    rem your zipping utility goes here: input = !fileList! and output = !zipfilename!
)
4

2 に答える 2

0

上記のコードは何もしません。

最初に、コメントの内容を実行する必要があります(archive-utilityを追加します)。次に、コードを.batまたは.cmdファイルに保存して実行します。

于 2012-08-10T08:54:24.947 に答える
0

7-Zip を使用して ZIP ファイルを作成する例を次に示します。修正が適用され、より多くの構成変数が追加されました。

各 ZIP に最大 100 個のファイルを含む複数の ZIP ファイルを作成し (groupcount変数で構成可能)、zip ファイルをMyBackup##.zipとして保存します。ここで、##は連番です。

MAKEZIPS使用法を示すパラメータなしで単独で入力します。フォルダー内のすべてのファイル (サブフォルダーを除く) をアーカイブしC:\My Data、ZIP ファイルを次の場所に配置する例D:\My Backup:

MAKEZIPS "C:\My Data" "D:\My Backup"

注: ZIP ファイルをソース フォルダーと同じフォルダーに配置しないでください。無限ループが発生する可能性があります。

他のアーカイバ プログラム (例: WinRAR ) を使用している場合は、プログラムのパスと、おそらくそのパラメータを変更する必要があります。

MAKEZIPS.BAT:

@echo off
setlocal enabledelayedexpansion
rem initialize all variables
rem ***config start***
rem change groupcount value if you want a different number of files per zip
set groupcount=100
rem change zipfilenamePrefix value if you want a different base file name
set zipfilenamePrefix=MyBackup
rem change zipfileExt value if you are creating other archive type
set zipfileExt=zip
rem ***config end***
set counter=0
set groupnumber=1
if "%~2"=="" (
  echo Usage: MAKEZIPS {Source Folder} {Target Folder}
  goto :eof
)
if not exist "%~1\nul" (
  echo Source folder not found.
  goto :eof
)
if not exist "%~2\nul" (
  echo Target folder not found.
  goto :eof
)
pushd %2
rem start looping over...
for %%f in (*) do (
    if not "%%f"=="%~nx0" (
        set fileList=!fileList! "%%f"
        set /a counter=!counter!+1
        set /a reminder=!counter!%%!groupcount!
        if !reminder! equ 0 (
            set zipfilename="%~1\%zipfilenamePrefix%!groupnumber!.%zipfileExt%"
            echo Zipping files: !fileList! into !zipfilename!
            rem your zipping utility goes here: input = !fileList! and output = !zipfilename!
            "C:\Program Files\7-Zip\7z.exe" a !zipfilename! !fileList!
            if not exist !zipfilename! (
                echo ZIP creation failed.
                goto :eof
            )
            set /a groupnumber=!groupnumber!+1
            set fileList=
        )
    )
)
rem there could be some left over files - last group may be less than 3 files
if %reminder% gtr 0 (
    set zipfilename="%~1\%zipfilenamePrefix%%groupnumber%.%zipfileExt%"
    echo Zipping into files: %fileList% %zipfilename%
    rem your zipping utility goes here: input = %fileList% and output = %zipfilename%
    "C:\Program Files\7-Zip\7z.exe" a %zipfilename% %fileList%
    if not exist %zipfilename% echo ZIP creation failed.
)
popd
于 2012-08-10T09:41:42.913 に答える