gpt4 book ai didi

batch-file - 将 Md5 校验和放入文件名

转载 作者:行者123 更新时间:2023-12-05 05:15:15 25 4
gpt4 key购买 nike

目录 1.txt 2.txt 3.txt .. n.txt 中有一些文件,我需要用它们的 md5 和重命名它们。我累了

for %f in (*.txt) do certutil -hashfile "%f" MD5 | findstr /C:2

最佳答案

如果您确实需要从命令行执行此操作(根据您问题中的语法),您只需要一个额外的 for/f 来处理 certutil 为每个文件执行的命令。

for %a in (*.txt) do @for /f "skip=1 tokens=1,* delims=:" %b in ('certutil -hashfile "%a" MD5') do @if "%c"=="" @echo ren "%a" "%b%~xa"

for/f 使用 skip 子句来避免 certutil 输出的第一行(文件名)和冒号作为分割线的分隔符以处理不需要的输出消息(以 CertUtil: 开头)。

这样如果该行包含一个冒号(不需要的行),它将被分成两部分(tokens=1,*),将左边的标记存储在%b%c 中的正确代码。

如果 %c 有任何内容,这不是包含散列的行。如果 %c 为空,这是带有散列的行,我们重命名文件。

注意事项:

  • ren 命令仅回显到控制台。如果输出看起来正确,请删除 echo 命令。

  • 如果无法读取文件(锁定或为空),certutil 只会输出错误行,因此不会有任何哈希值,所有行都将被丢弃,不会执行重命名操作.

无论如何,从命令行执行此操作很容易出错。如果可以,正如 Hackoo 所建议的,使用批处理文件。

@echo off
setlocal enableextensions disabledelayedexpansion

for /f "tokens=1,* delims=:" %%a in ('
cmd /q /c "for %%f in (*.txt) do certutil -hashfile "%%f" MD5&&(echo file:%%f)"
^| findstr /v /b /i /c:"MD5" /c:"Cert"
') do (
if "%%a"=="file" (
set "file=%%b"
set "extension=%%~xb"
setlocal enabledelayedexpansion
echo ren "!file!" "!md5: =!!extension!"
endlocal
set "md5="
) else (
set "md5=%%a"
)
)

编辑以在批处理代码中包含 sst 在注释中指出的更正

关于batch-file - 将 Md5 校验和放入文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51798836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com