sintaxis para archivar carpetas individuales

0

alguien puede modificar / editar este comando por lotes para que vaya al directorio raíz de cada carpeta antes de archivarlo.

para / d %% X en (*) haga "c: \ Archivos de programa \ 7-Zip \ 7z.exe" a "%% X.zip" "%% X \"

Básicamente tengo muchas carpetas que quiero archivar por separado. pero el comando por lotes anterior archiva la carpeta individual en el directorio raíz / principal. así que extraerlos provocará una carpeta duplicada.

Necesito que sea así. directorio principal con muchas carpetas, luego vaya a carpetas individuales y luego archívelas. Espero que alguien ayude.

Denis Macaraig
fuente

Respuestas:

0

Bueno, tu descripción de los resultados deseados no es exactamente clara. A continuación se muestra un diseño hipotético de un árbol de directorios.

C:\TopDir
├───Dir1
│   └───[Dir1 files]
│
├───Dir2
│   ├───SubDir2.1
│   │   └───[files]
│   │
│   ├───SubDir2.2
│   │   └───[files]
│   │
│   ├───SubDir2.3
│   │   └───[files]
│   │
│   └───[Dir2 files]
│
├───More Dirs...
│  
└───[TopDir files]

A continuación se muestra lo que tiene después de ejecutar el comando en cuestión (tenga en cuenta que no está eliminando ninguno de los archivos que archivó, por lo que aún permanecen). Tiene un montón de archivos .zip del proceso de archivo en la carpeta raíz (que entiendo es lo que no quiere).

C:\TopDir
├───Dir1
│   └───[Dir1 files]
│
├───Dir2
│   ├───SubDir2.1
│   │   └───[files]
│   │
│   ├───SubDir2.2
│   │   └───[files]
│   │
│   ├───SubDir2.3
│   │   └───[files]
│   │
│   └───[Dir2 files]
│
├───More Dirs...
│
├───Dir1.zip
├───Dir2.zip
├───Dirx.zip...
└───[TopDir files]

Si extrae estos archivos Zip de esta misma carpeta (la carpeta raíz), se extraerán en la estructura de directorios existente y le avisarán cuando encuentren una situación de sobrescritura de archivos. No creará "doble carpeta". Supongo que por carpeta doble, se refiere a una estructura de este tipo:

C:\TopDir
├───Dir1
│   ├───[Dir1 files]
│   └───Dir1
│       └───[Dir1 files]

Ahora, si mueve los archivos zip a sus respectivas carpetas y los descomprime, terminará con carpetas dobles.

Aquí está el comando que debe hacer lo que creo que desea: coloque un archivo zip del contenido de cada carpeta en esa carpeta:

for /d %%x in (*) do cd %%x && 7z a -tzip -r %%x.zip && cd..

La -tzipopción asegura que el archivo sea un archivo .zip, .7z es el formato zip predeterminado de 7zip. Como está en un archivo por lotes, también puede construirlo de esta manera:

for /d %%x in (*) do (
  cd %%x
  7z a -tzip -r %%x.zip
  cd..
)
Scott McKinney
fuente