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:
-
/Finforma FOR para iterar sobre o valor expandido em () -
usebackqinforma 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
/BemDIRé para o formato em - apenas o nome - O
/A:DemDIRé 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"