Como posso compactar vários arquivos sem incluir a extensão do arquivo de origem?

2

Estou tentando compactar vários arquivos, mas continuo criando esse problema para o qual meu código obviamente não funciona. Aqui está o código:

for /r %%X in (*) do "c:\Program Files-Zipz.exe" a "%%X.7z" "%%X"

Eu estou tentando 7z vários arquivos em um diretório, mas continuo recebendo meus arquivos em um formato como "Foobar.txt.7z", mas em vez disso eu gostaria que fosse "Foobar.7z" Eu tenho milhares de arquivos e Eu sei que isso seria uma solução fácil. Eu não sei como.

    
por Timmothy 21.07.2017 / 21:23

2 respostas

1

Eu continuo recebendo meus arquivos em um formato como "Foobar.txt.7z"

for /r %%X in (*) do "c:\Program Files-Zipz.exe" a "%%X.7z" "%%X"

Você precisa remover a extensão de %%X . Você pode fazer isso usando a expressão %%~nX :

for /r %%X in (*) do "c:\Program Files-Zipz.exe" a "%%~nX.7z" "%%X"

No entanto, se você fizer isso, poderá ter um problema se houver vários arquivos com o mesmo nome, mas extensões diferentes. Por exemplo, no meu diretório de teste, eu tenho arquivos com os seguintes nomes:

> dir /b test.*
test.cmd
test.ps1
test.sh
test.txt

Usando o seguinte em um arquivo em lotes:

for /r %%X in (*) do "c:\Program Files-Zipz.exe" a "%%~nX.7z" "%%X"

Produzirá o seguinte para os arquivos acima:

"c:\Program Files-Zipz.exe" a "test.7z" "F:\test\test.cmd"
"c:\Program Files-Zipz.exe" a "test.7z" "F:\test\test.ps1"
"c:\Program Files-Zipz.exe" a "test.7z" "F:\test\test.sh"
"c:\Program Files-Zipz.exe" a "test.7z" "F:\test\test.txt"

Você precisará descobrir uma maneira de lidar com esses nomes de arquivos duplicados, a menos que adicionar vários arquivos ao mesmo arquivo seja sua intenção.

Na linha de comando, você pode substituir %% por % , da seguinte maneira:

for /r %X in (*) do "c:\Program Files-Zipz.exe" a "%~nX.7z" "%X"

Leitura Adicional

por 21.07.2017 / 22:22
1

Você está especificando o nome completo do arquivo com a extensão .7z em seu comando. Vamos parar de fazer isso:

for /r %X in (*) do "c:\Program Files-Zipz.exe" a "%~nX" "%X"

EXPLICAÇÃO: Você está usando variáveis do DOS. % X é a variável. Existem variações no DOS para manipular variáveis. O "~ n" expressa o nome do arquivo da variável sem a extensão.

DE: link

%~nI expands %I to a file name only

    
por 21.07.2017 / 22:09