Abaixo está um script que usei no passado para uma tarefa semelhante com 100% de sucesso, que é puro lote com 7Zip onde você pode especificar explicitamente o diretório de origem, onde pode ser uma letra de unidade ou pasta.
Isso também permite especificar explicitamente um diretório temporário raiz inicial e, em seguida, criar uma nova pasta dentro dele correspondente ao nome do arquivo zip menos a extensão zip e, em seguida, removê-lo uma vez 7Zip estão completas para cada arquivo zip Para / F loop itera e processa.
Script
Você acabou de definir os valores das variáveis Src=
, ExtractDir=
e z7=
como sendo o que eles precisam para estar em seu ambiente na parte superior do script e o restante apenas funcionará. / em>
Você pode especificar os métodos de compactação 7Zip necessários no final do O comando %z7% a ~
logo após o -aoa
muda como -aoa -m<method_parameters>
para as suas necessidades.
Para rodar como um script em lote, salve a lógica em um documento de texto na sua área de trabalho, etc. como <something>.cmd
do arquivo de texto arquivo | salvar opções. Uma vez salvo, basta clicar duas vezes nele para executar a lógica (ou clicar com o botão direito do mouse como administrador) e confirmar que os arquivos foram manipulados como esperado posteriormente.
@ECHO ON
SET Src=X:\
SET ExtractDir=%Src%\tmpExtract007
SET z7="C:\Program Files-Zipz.exe"
FOR /F "usebackq tokens=*" %%a IN ('DIR /S /B /A-D "%Src%\*.zip"') DO (
IF NOT EXIST "%ExtractDir%\%%~Na" MD "%ExtractDir%\%%~Na"
ECHO A | %z7% e "%%~Fa" -o"%ExtractDir%\%%~Na" -r
%z7% a "%%~Fa" "%ExtractDir%\%%~Na\*" -aoa
RD /Q /S "%ExtractDir%\%%~Na"
)
PAUSE
EXIT
Por favor, note o ECHO A |
na frente do comando %z7% e ~
para dizer a ele para sobrescrever quaisquer arquivos existentes que existam no diretório out ao invés de esperar que você o informe, etc.
Alémdisso,observeousodaopção-aoa
nofinaldocomando%z7%a~
,quedizparasobrescrevertodososarquivosexistentesnoarquivozipquevocêestácompactandoparasubstituirtodososarquivosoriginaisdentrodelesemrealmenteexcluiroarquivo.todooarquivoziporiginaldeantemãoqueémuitosimplesdeadicionaraestescript,senecessário,porumalinhaadicionaldeIFEXIST"%%~Fa" DEL /Q /F "%%~Fa"
.