Não tenho certeza se você pode fazer o que você está sugerindo usando a interface gráfica do usuário, mas certamente você pode usar a linha de comando:
FOR %i IN (*.*) DO 7z.exe a "%~ni.7z" "%i"
Você precisaria alterar o diretório (o comando cd
) para o diretório F:\Downloads
primeiro ou o diretório que deseja executar a compactação em massa. Além disso, é fácil substituir em * .exe ou qualquer extensão que você queira filtrar para apenas compactar esses documentos.
E o anel do decodificador secreto:
-
%i
é uma variável que contém o nome do arquivo para cada etapa do loop -
(*.*)
é o critério de seleção, pode ser facilmente * .exe ou similar -
7z.exe
é a versão de linha de comando do 7-Zip -
%~ni
- isso expande a variável% i para apenas o nome do arquivo - sem extensão
Se você quiser apenas adicionar as pastas de um determinado diretório, o comando é um pouco mais complexo, pois, por padrão, o FOR apenas trabalha com arquivos. Precisamos fornecer algumas informações adicionais:
FOR /F "usebackq delims=?" %i IN ('DIR /B /A:D') DO 7z.exe a "%i.7z" "%i"
Isso funciona por causa de algumas peças do que parece mágica:
-
/F
informa FOR para iterar sobre o valor expandido em () -
usebackq
informa para que eu passe um comando e use a saída para iterar -
delims=?
informa para FOR que eu quero separar os tokens em?
- um caractere ilegal em nomes de arquivos e diretórios. Eu só quero um token. - O
/B
emDIR
é para o formato em - apenas o nome - O
/A:D
emDIR
é para restringir os resultados por atributo, o D é para diretórios
Se você quiser encapsular isso dentro de um arquivo de lote, a única mudança que você precisará fazer é duplicar a variável% i:
FOR %%i IN (*.*) DO 7z.exe a "%%~ni.7z" "%%i"