Cree varios archivos desde un directorio sin agregar el nombre raíz del directorio al archivo

Cree varios archivos desde un directorio sin agregar el nombre raíz del directorio al archivo

Este lote funciona bien para crear varios archivos en una carpeta, pero agrega la carpeta raíz al archivo. Me gustaría que solo agregue los archivos dentro de la raíz. Este es el código que tengo:

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

Respuesta1

Simplemente necesitas usar solo unparabucle omitiendo el /dparámetro y funcionará tal como describe la creación de los archivos zip y no contendrá su carpeta principal.

Comandos

Nota: Esto agregará un archivo zip para cada archivo en el directorio con solo ese archivo en el zip.

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

Nota: Esto agregará todos los archivos solo en el directorio al archivo zip que especifique.

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

Comando de bucle anidado

Nota: Esto agregará archivos solo de los directorios debajo del directorio en el que reside el archivo por lotes a un archivo zip que coincida con el nombre del directorio.

@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 adicionales

  • 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.
    
  • Directorio
  • Para
  • un comando (Agregar)

información relacionada