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 /d
parâ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)