ディレクトリルート名をアーカイブに追加せずに、ディレクトリから複数のアーカイブを作成します。

ディレクトリルート名をアーカイブに追加せずに、ディレクトリから複数のアーカイブを作成します。

このバッチは、フォルダー内に複数のアーカイブを作成するのにはうまく機能しますが、アーカイブにルート フォルダーを追加します。ルート内のファイルのみを追加したいです。これが私が持っているコードです:

for /d %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X"

答え1

必要なのはのためにパラメータを省略したループ/dは、親フォルダを含まない zip アーカイブ ファイルを作成するように説明したとおりに機能します。

コマンド

注記: これにより、ディレクトリ内の各ファイルに対して zip アーカイブ ファイルが追加され、そのファイルのみが zip 内に含まれるようになります。

for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%%~X.zip" "%%~X"

注記: これにより、ディレクトリ内のすべてのファイルのみが、指定した 1 つの zip ファイルに追加されます。

for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "<MyZipFileName>.zip" "%%~X"

ネストループコマンド

注記: これにより、バッチ ファイルが存在するディレクトリの下のディレクトリからのファイルのみが、ディレクトリ名に一致する zip ファイルに追加されます。

@ECHO ON

FOR /F "TOKENS=*" %%A in ('DIR /S /B /AD "*"') DO (
  FOR %%B IN (*) DO (
      "C:\Program Files\7-Zip\7z.exe" a "%%~fA.zip" "%%~fA\*")
)
EXIT

その他のリソース

  • /Fの場合
  • FOR /?

        tokens=x,y,m-n  - specifies which tokens from each line are to
                          be passed to the for body for each iteration.
                          This will cause additional variable names to
                          be allocated.  The m-n form is a range,
                          specifying the mth through the nth tokens.  If
                          the last character in the tokens= string is an
                          asterisk, then an additional variable is
                          allocated and receives the remaining text on
                          the line after the last token parsed.
    
  • ディレクター
  • のために
  • (追加)コマンド

関連情報