Como determinar o nome de um arquivo extraído de um arquivo zip por meio de um script em lote

1

Antecedentes

Eu tenho um arquivo em lotes no Windows XP que recebe um argumento: um nome de arquivo zip criado com 7-zip .

Este arquivo contém um único arquivo de backup do MySQL dentro de: backup.sql .

Eu gostaria de restaurar o banco de dados dado este arquivo zip. Primeiro eu extraí-lo para um diretório temporário como este:

path_to_7zipz e "%~1" -otemp_dir

Eu gostaria de ter algo assim (em que extracted_file_name seria backup.sql ):

path_to_mysql\mysql < extracted_file_name

Pergunta:

Como faço para descobrir o nome do arquivo extraído (por exemplo, backup.sql )?

O que devo fornecer como entrada em vez de extracted_file_name se eu não souber o nome do arquivo que está dentro do arquivo zip?

    
por Misha Moroshko 01.10.2010 / 14:13

2 respostas

3

Você pode criar um arquivo em lote contendo as etapas abaixo.

cdztemp
del zout\*.* /q
7z e *.7z -ozout
cdzout
for %%f in ( *.sql) do mysql ^< %%f

Suposições que fiz:

  • 7ztemp é o diretório para o qual o arquivo é baixado e não contém outros arquivos
  • 7zout é o diretório para o qual o arquivo 7z é extraído. Estou excluindo arquivos existentes em 7zout antes de extrair o arquivo
por 01.10.2010 / 16:09
0

Se houver apenas um arquivo na pasta, você poderá usar DIR /B para listar o conteúdo.

A única entrada seria o arquivo que foi descompactado.

    
por 01.10.2010 / 14:37