Me gustaría cambiar el nombre de todos los archivos en una carpeta a su valor SHA1 HASH.
Tengo una utilidad de línea de comandos que puedo usar "sha1.exe -s"para hacer eco del valor SHA1 Hash, pero necesito cambiar el nombre de todos los archivos en esa carpeta para que coincida (sin extensión).
Esencialmente, me gustaría que funcionara así:
rename file.exe (sha1.exe -s file.exe)
En la práctica resulta algo como esto:
forfiles /p E:\software\sha1 /c "cmd /c rename @file (sha1.exe -s @file)"
Estoy abierto a usar otros recursos como Powershell si eso es lo que se requiere.
Agradezco cualquier ayuda!
windows
command-line
powershell
Craysh
fuente
fuente

No estoy familiarizado con un
forfilescomando, ni con una/Popción paraforcomandos similares que conozco, así que supongo queE:\software\sha1es un archivo de texto que enumera los archivos en los que desea operar, una ruta por línea.o si lo estás escribiendo a mano:
fuente
/Popción acepta un directorio para obtener el listado para operar. Entonces, si reemplazasGet-ContentconGet-ChildItem, eres dorado.El marco .Net tiene características de hashing incorporadas. Aquí se explica cómo hacerlo en PowerShell sin utilizar utilidades adicionales.
Por ejemplo, para cambiar el nombre de todos los archivos en c: \ temp, ejecute el comando:
fuente