このバッチは、フォルダー内に複数のアーカイブを作成するのにはうまく機能しますが、アーカイブにルート フォルダーを追加します。ルート内のファイルのみを追加したいです。これが私が持っているコードです:
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.
- ディレクター
- のために
- (追加)コマンド