Como eu extraio todos os arquivos nos subdiretórios desta pasta?

1

Eu pesquisei este título e a resposta do seguinte arquivo CMD foi dada:

FOR /D /r %%F in ("*") DO (
    pushd %CD%
    cd %%F
           FOR %%X in (*.rar *.zip) DO (
        "C:\Program Files-zipz.exe" x %%X
           )
    popd
)

O arquivo cmd funciona muito bem até certo ponto. Exceto ele fornece a seguinte mensagem para cada arquivo encontrado com extensão "ZIP" e pergunta:

Would you like to replace the existing file:
Path xxxxxx
Size xxxx
Modified: XXXXXXX
with the file from the archive:
Path: xxxx
Size: xxxxx
? Y<es> \ N<o> \ A<lways> \ S<kip all> \A<u>to rename all \ <Q>uit 

Ele pára ali esperando por uma entrada. Mas ele pergunta cada vez que um arquivo é descompactado. Eu ia modificar o arquivo de comando acima com algo que verifica se ? é encontrado e, em seguida, chama para um arquivo cmd de resposta que gera um "Y" e sai, o que me levaria de volta ao arquivo de comando original para processar o próximo arquivo com o "zip" encontrado.

Não sei se estou no caminho certo, mas gostaria de receber ajuda. Não sei qual programa está exibindo o ? e o texto. É o Windows 7 ou é 7-zip que está perguntando?

    
por Kennertoy 16.06.2016 / 22:42

2 respostas

1

É o 7-zip que produz o prompt. Parece que a -y switch para 7z.exe faz o que você deseja:

All overwrite queries will be suppressed and files on disk with same filenames as in archive will be overwritten.

O exemplo da documentação indica que você deve colocar -y após o caminho dado a 7z.exe .

    
por 16.06.2016 / 22:55
1

Eu não sei qual programa está exibindo o "?" e texto

É 7z.exe .

O comutador correto a ser usado é -aoa (sobrescrever todos os arquivos existentes sem prompt).

Exemplo:

"C:\Program Files-zipz.exe" x %%X -aoa

-ao (modo de substituição)

Specifies the overwrite mode during extraction, to overwrite files already present on disk.

Syntax

-ao[a | s | t | u ]

Switch    Description
-aoa  Overwrite All existing files without prompt.
-aos  Skip extracting of existing files.
-aou  aUto rename extracting file (for example, name.txt will be renamed to name_1.txt).
-aot  auto rename existing file (for example, name.txt will be renamed to name_1.txt).

Fonte -ao (modo de substituição)

    
por 16.06.2016 / 22:58