Crie vários arquivos a partir de um diretório sem que o nome raiz do diretório seja adicionado ao arquivo

Crie vários arquivos a partir de um diretório sem que o nome raiz do diretório seja adicionado ao arquivo

Este lote funciona bem para criar vários arquivos em uma pasta, mas adiciona a pasta raiz ao arquivo. Eu gostaria que adicionasse apenas os arquivos dentro da raiz. Este é o código que tenho:

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

Responder1

Você simplesmente precisa usar apenas umparaloop omitindo o /dparâmetro e ele funcionará exatamente como você descreve a criação do(s) arquivo(s) zip e não conterá sua pasta pai.

Comandos

Observação: Isso adicionará um arquivo zip para cada arquivo no diretório com apenas esse arquivo no zip.

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

Observação: Isso adicionará todos os arquivos apenas no diretório ao arquivo zip que você especificar.

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

Comando Nest Loop

Observação: Isso adicionará arquivos apenas dos diretórios abaixo do diretório onde o arquivo em lote reside a um arquivo zip correspondente ao nome do diretório.

@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

Recursos adicionais

  • Para /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.
    
  • Dir
  • Para
  • um comando (Adicionar)

informação relacionada