El comando 7zip no se extrae al directorio de salida especificado

El comando 7zip no se extrae al directorio de salida especificado
7z x d:\migration\mongo\mongodb.7z o:f:\data *.* -r

Estoy usando este comando como parte de un lote para extraer el contenido de un archivo 7z de una unidad (D) a otra (F). La estructura de carpetas es importante, por eso estoy usando el xcomando con recursividad.

Lo que se supone que debe suceder es que el contenido del archivo se descomprime en formato f:\data.

Quérealmente sucediendoes que el contenido se está descomprimiendo en el directorio de trabajo del archivo por lotes ( f:\migration\). Especificar el directorio de trabajo ( -w:) en el comando no tiene ningún efecto.

¿Cómo puedo hacer que mi comando funcione según lo previsto?

Estoy usando 7zip x64 9.22b en Windows Server 2012 R2.

Editar: mi pregunta original señalaba que los datos se estaban extrayendo en dos lugares simultáneos. Resulta que este no fue el caso. Mi pregunta se actualizó para reflejar esto.

Respuesta1

Estoy usando 7za.exe (versión de línea de comandos) pero lo mismo ocurre con 7z.exe. Echa un vistazo al mensaje de ayuda.con cuidado:

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

Usage: 7za <command> [<switches>...] <archive_name> [<file_names>...]
       [<@listfiles...>]

<Commands>
  a: Add files to archive
  b: Benchmark
  d: Delete files from archive
  e: Extract files from archive (without using directory names)
  l: List contents of archive
  t: Test integrity of archive
  u: Update files to archive
  x: eXtract files with full paths

<Switches>
  -ai[r[-|0]]{@listfile|!wildcard}: Include archives
  -ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
  -bd: Disable percentage indicator
  -i[r[-|0]]{@listfile|!wildcard}: Include filenames
  -m{Parameters}: set compression Method
  -o{Directory}: set Output directory
  -p{Password}: set Password
  -r[-|0]: Recurse subdirectories
  -scs{UTF-8 | WIN | DOS}: set charset for list files
  -sfx[{name}]: Create SFX archive
  -si[{name}]: read data from stdin
  -slt: show technical information for l (List) command
  -so: write data to stdout
  -ssc[-]: set sensitive case mode
  -ssw: compress shared files
  -t{Type}: Set type of archive
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
  -v{Size}[b|k|m|g]: Create volumes
  -w[{path}]: assign Work directory. Empty path means a temporary directory
  -x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
  -y: assume Yes on all queries

¿Ves cómo se menciona claramente que los interruptores son -oy -w? Como en, hay unguiónque preceden a los interruptores pero no a los comandos. También elcolonesnoparte del propio interruptor. Si fuera así, entonces debería haberlo usado de manera similar x:en lugar de solo xextraer con rutas. En consecuencia, su uso extraño de o:<Path>y w:<Path>es la razón de sus dolores de cabeza.

Utilice algo como esto para comprimir una carpeta de forma recursiva y almacenar rutas relativas:

7za a -r Archive.7z C:\InputFolder

Utilice lo siguiente para extraer a un directorio específico:

7za x -oD:\OutputFolder Archive.7z

Obviamente, si los nombres de sus carpetas tienen espacios, utilice comillas dobles.

Respuesta2

En mi caso, funcionaba en CMD, pero no en Powershell. Citar el directorio de destino me lo resolvió.

Lo siguiente funciona en CMD, pero no en Powershell

7z x d:\migration\mongo\mongodb.7z -of:\data *.* -r

Lo siguiente funciona en ambos

7z x d:\migration\mongo\mongodb.7z -o"f:\data" *.* -r

información relacionada