Comando WinRar para compactar (zip) todos os arquivos na pasta com outro arquivo

2

Eu tenho um arquivo de texto que desejo arquivar com cada arquivo em uma pasta específica.

Por exemplo, a pasta tem: File1 , File2 , File3 e TextDoc1 .

Eu quero criar File1.zip (que inclui File1 e TextDoc1 ), File2.zip (que inclui File2 e TextDoc1 ) e File3.zip (que inclui File3 e TextDoc1 ).

Existe um comando em lotes que eu possa executar (como um .bat) para criar esses arquivos, em vez de criar cada um individualmente? Eu tenho usado listfiles, mas ainda preciso criar cada arquivo .txt com os nomes dos arquivos.

Isso é o que eu tenho usado:

"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File1.zip" @"File1.txt"
"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File2.zip" @"File2.txt"

etc.

Zip ou Rar está bem.

    
por Luke 05.12.2012 / 20:09

2 respostas

1

@echo off for %%f in (*) do (       if not %%f==TextDoc1 (            (your command to create%%~nf.zipcontaining%%fandTextDoc1)       ) )

for %%f in (*) significa para cada arquivo no diretório atual - DO o comando para criar o arquivo ZIP (cujos detalhes são irrelevantes) - exceto quando você considera o próprio arquivo TextDoc1. Pule isso, senão você criará um arquivo TextDoc1.zip que contém duas cópias de TextDoc1 (ou talvez apenas uma, dependendo de como o WinRAR funciona).

A única coisa complicada é o %%~nf , que é a parte do nome do arquivo %%f (com a extensão removida). Eu usei isso porque, enquanto você deu File1, File2 e File3 como nomes de arquivo de exemplo, eu acho que você também tem File4.txt, résumé.doc, flower.jpg, etc. Eu estou fazendo o palpite de que você quer que os arquivos ZIP sejam chamados de File4.zip, résumé.zip e flower.zip, ao invés de File4 .txt .zip, currículo .doc .zip e flor .jpg .zip. Claro que isso significa que, se houver schedule.mpp e schedule.xls, podemos ter um problema.

    
por 05.12.2012 / 20:58
0

Aqui está um lote que você pode experimentar:

@echo off

rem Set highest number
set /a highcount=3

rem Initialize counter to 1
set /a counter=1

:loop
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.zip" "File%counter%"
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.zip" "TextDoc1"

rem Increment the counter by 1
set /a counter+=1

rem If the counter is less than or equal to "highcount", then loop and do the next file.
if %counter% LEQ %highcount% goto loop

Isso deve criar 3 arquivos zip chamados File1.zip, File2.zip e File3.zip, cada um com um arquivo "File #" correspondente e o mesmo "TextDoc1".

    
por 05.12.2012 / 20:50