希望将一批 cab 文件重命名为小写,并添加其 SHA1 哈希值

希望将一批 cab 文件重命名为小写,并添加其 SHA1 哈希值

我需要一个批处理脚本来将文件夹中的所有文件重命名为小写字母,并在下划线后添加其 SHA1 哈希值。

例子:

我有一个名为“Windows8.1-KB2862152-x86.cab”的文件,它的哈希值是“bc44b5c4daca0fb2a7b596bafb3d751231983c0e”,所以我需要将其重命名为:windows8.1-kb2862152-x86_bc44b5c4daca0fb2a7b596bafb3d751231983c0e.cab,其中 W 现在是小写的,KB 也是小写的。

我有大量需要这种格式的文件。

我还应该提到,我有 IBM Endpoint Manager 的 SHA1 工具(sha1.exe),其用法如下:

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.

我有以下在该站点上找到的脚本,但出现“命令语法不正确”

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

显然它被这样调用:for %A IN (C:\PathToFolder*) DO C:\SomeFolder\hasher.bat "%A" 但是这对小写重命名也没有帮助,而且我认为它会丢失文件扩展名。

答案1

如果您将文件名作为参数传递,您的脚本应该可以正常工作。例如,将其保存为 hash.bat 并hash.bat Windows8.1-KB2862152-x86.cab从命令行运行。

该脚本将文件重命名为Windows8.1-KB2862152-x86.cab_bc44b5c4daca0fb2a7b596bafb3d751231983c0e

如果我理解正确的话,你想要。出租车扩展名在末尾,并且希望文件名全部为小写。

要修复 .cab 部分,请使用替换。将脚本中的最后一行从:

ren %FULLNAME% %FULLNAME%_%hash%

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

现在,添加另一行将所有文件重命名为小写。dir /l 以小写列出输出,因此列出所有文件并根据输出重命名它们:

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

因此,你的脚本应该是:

@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"

您需要修改工作目录的脚本或从存储 .cab 文件的同一目录运行该脚本。

相关内容