Procurando renomear um lote de arquivos cab para minúsculas, além de adicionar seu hash SHA1

1

Eu preciso de um script em lote para renomear todos os arquivos em uma pasta com seu equivalente em letras minúsculas, com o hash SHA1 adicionado no final após um sublinhado.

Exemplo:

Eu tenho um arquivo chamado: "Windows8.1-KB2862152-x86.cab" o hash é "bc44b5c4daca0fb2a7b596bafb3d751231983c0e" então eu preciso que ele seja renomeado para: windows8.1-kb2862152-x86_bc44b5c4daca0fb2a7b596bafb3d751231983c0e.cab onde o W está agora em minúsculas e as KB também estão em minúsculas.

Eu tenho uma quantidade MASSIVA desses arquivos que eu preciso neste formato.

Também devo mencionar que tenho a ferramenta SHA1 do IBM Endpoint Manager (sha1.exe) a utilização é a seguinte:

sha1 [-r|-s|-m|-b] <filename> [-c]

-r: Calculate Size/Sha1 and print out a prefetch style statement for 6.0+ style downloads (use this normally).
-s: Sha1 only.
-m: Sha1 in MIME format (hex-encoded and base-64).
-b: Calculate Size/sha1 and print out a prefetch block statment for 7.2+ style downloads.
-c: Puts the result string into you paste buffer so you don't need to copy/paste out of the command window.

Eu tenho o seguinte script que encontrei neste site, mas recebo "A sintaxe do comando está incorreta"

@ECHO OFF
SET FULLNAME=%~f1
for /f "delims=" %%a in ('sha1.exe -s %FULLNAME%') do SET hash=%%a
ren %FULLNAME% %FULLNAME%_%hash%

aparentemente é chamado por: para% A IN (C: \ PathToFolder *) DO C: \ SomeFolder \ hasher.bat "% A" no entanto, isso também não ajudará na renomeação de minúsculas, e acho que perderia a extensão do arquivo.

    
por Flux 16.12.2014 / 23:26

1 resposta

0

Seu script deve funcionar bem se você passar o nome do arquivo como um argumento. Por exemplo, salve-o como hash.bat e execute hash.bat Windows8.1-KB2862152-x86.cab na linha de comando.

Esse script renomeia o arquivo para Windows8.1-KB2862152-x86.cab_bc44b5c4daca0fb2a7b596bafb3d751231983c0e

Se bem entendi, você quer a extensão .cab no final e deseja que o nome do arquivo seja todo em minúsculas.

Para corrigir a parte .cab, use substituição. Altere a última linha do seu script de:

ren %FULLNAME% %FULLNAME%_%hash%

para

ren %FULLNAME% %FULLNAME:.cab=%_%hash%.cab

Agora, adicione outra linha para renomear todos os arquivos para minúsculas. dir / l lista a saída em letras minúsculas, portanto, liste todos os arquivos e renomeie-os de acordo com a saída:

for /f "tokens=*" %%a in ('dir /l /b /s /a-d') do ren "%%a" "%%a"

Então, seu script deve ser:

@ECHO OFF
SET FULLNAME=%~f1
for /f "delims=" %%a in ('sha1.exe -s %FULLNAME%') do SET hash=%%a
ren %FULLNAME% %FULLNAME:.cab=%_%hash%.cab
for /f "tokens=*" %%a in ('dir /l /b /s /a-d') do ren "%%a" "%%a"

Você precisará modificar o script do diretório de trabalho ou executar o script no mesmo diretório em que armazena os arquivos .cab.

    
por 19.12.2014 / 02:29

Tags