comando 7zip não extrair para o diretório de saída especificado

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

Estou usando este comando como parte de um lote para extrair o conteúdo de um arquivo 7z de uma unidade (D) para outra (F). A estrutura da pasta é importante, portanto estou usando o comando x com recursão.

O que acontece é que o conteúdo do arquivo é descomprimido em f:\data .

O que está realmente acontecendo é o conteúdo ser descompactado no diretório de trabalho do diretório do arquivo de lote ( f:\migration\ ). Especificar o diretório de trabalho ( -w: ) no comando não tem efeito.

Como posso fazer meu comando funcionar como pretendido?

Estou usando o 7zip x64 9.22b no Windows Server 2012 R2.

Edit: minha pergunta original observou que os dados estavam sendo extraídos para dois lugares simultâneos. Como se constata, este não foi o caso. Minha pergunta foi atualizada para refletir isso.

    
por Chad Levy 13.05.2015 / 06:26

1 resposta

4

Estou usando o 7za.exe (versão de linha de comando), mas o mesmo vale para o 7z.exe. Dê uma olhada na mensagem de ajuda cuidadosamente :

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

Você vê como é claramente mencionado que os switches são -o e -w ? Como em, há um hífen precedendo as opções, mas não os comandos. Além disso, o cólon não é parte do próprio switch. Se foi, então você deve ter usado similarmente x: em vez de apenas x para extrair com caminhos. Conseqüentemente, seu uso estranho de o:<Path> e w:<Path> é o motivo das suas dores de cabeça.

Use algo assim para compactar uma pasta recursivamente e armazenar caminhos relativos:

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

Use o seguinte para extrair para um diretório específico:

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

Obviamente, se os nomes das pastas tiverem espaços, use aspas duplas.

    
por 14.05.2015 / 05:23