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