首页 > 其他分享 >为文件一键命名为其md5值

为文件一键命名为其md5值

时间:2024-01-18 16:57:07浏览次数:25  
标签:文件 set %% 一键 file 命名 path md5

为文件一键命名为其md5值

不知道怎么给文件命名?一键命名为其md5不就是了!

单文件拖拽版

无需启动,直接将文件拖拽到.bat文件上

@echo off
setlocal enabledelayedexpansion

:: 获取文件完整路径
set "file_path=%~1"

:: 检查文件是否存在
if not exist "!file_path!" (
    echo File not found: !file_path!
    exit /b 1
)

:: 使用CertUtil计算MD5
for /f "delims=" %%a in ('certutil -hashfile "!file_path!" MD5 ^| find /v ":" ^| find /v "CertUtil"') do (
    set "file_md5=%%a"
)

:: 替换MD5字符串中的空格
set "file_md5=!file_md5: =!"

:: 获取文件目录、文件名和扩展名
for %%i in ("!file_path!") do (
    set "file_dir=%%~dpi"
    set "file_name=%%~ni"
    set "file_ext=%%~xi"
)

:: 重命名文件
set "new_file_path=!file_dir!!file_md5!!file_ext!"
echo Renaming "!file_path!" to "!new_file_path!"
rename "!file_path!" "!file_md5!!file_ext!"

:: 结束
endlocal

多文件拖拽版

可能一次需要处理多个文件吧。那么将它们全选中,一并拖拽即可

@echo off
setlocal enabledelayedexpansion

:: 遍历所有提供的文件路径
:next
if "%~1"=="" goto end
set "file_path=%~1"

:: 检查文件是否存在
if not exist "!file_path!" (
    echo File not found: !file_path!
    goto shiftArgs
)

:: 使用CertUtil计算MD5
for /f "delims=" %%a in ('certutil -hashfile "!file_path!" MD5 ^| find /v ":" ^| find /v "CertUtil"') do (
    set "file_md5=%%a"
)

:: 替换MD5字符串中的空格
set "file_md5=!file_md5: =!"

:: 获取文件目录、文件名和扩展名
for %%i in ("!file_path!") do (
    set "file_dir=%%~dpi"
    set "file_name=%%~ni"
    set "file_ext=%%~xi"
)

:: 重命名文件
set "new_file_path=!file_dir!!file_md5!!file_ext!"
echo Renaming "!file_path!" to "!new_file_path!"
rename "!file_path!" "!file_md5!!file_ext!"

:: 移动到下一个参数
:shiftArgs
shift
goto next

:: 结束
:end
endlocal

Attention

请注意,在实际使用之前在安全的环境中测试此脚本,以确保它满足你的要求并且没有意外的行为。

标签:文件,set,%%,一键,file,命名,path,md5
From: https://www.cnblogs.com/Vanilla-chan/p/17972860

相关文章

  • C# 中,可以使用 System.Net.Sockets 命名空间中的 UdpClient 类来发送和接收 UDP 数据
    C#中,可以使用System.Net.Sockets命名空间中的UdpClient类来发送和接收UDP数据报文。以下是一个简单的C#示例,演示如何使用UDP发送和接收数据:点击查看代码usingSystem;usingSystem.Net;usingSystem.Net.Sockets;classProgram{staticvoidMain(){......
  • Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界
    一、前言这个系列对应自定义控件大全,一个专注于控件的编写,一个专注于UI界面的编写,程序员有两大软肋,一个是忌讳别人说自己的程序很烂很多bug,一个就是不擅长UI,基本上配色就直接rgb,对于第一点,只要放松心态,直面自己的不足,不断改进,才能问鼎武林至尊。至于第二点,因为程序员擅长的是逻辑......
  • C# 错误 CS0234: 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop
      错误CS0234:命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”(是缺少程序集引用吗?) 解决办法是 添加应用,com, 找到MicrosoftExcel11.0objectlibrary    一、“视图”----->“解决方案资源管理器”二、“引用”三、右键点......
  • kubernetes限制命名空间的磁盘
    kubernetes限制命名空间的磁盘只有requests没有limits,其中requests限制了请求的大小,但是限制不了实际使用的大小磁盘的requests限制apiVersion:v1kind:ResourceQuotametadata:name:namespace-quotaspec:hard:requests.storage:60Gi申请指定sc的requests......
  • Spring 工具:DigestUtils md5 摘要工具
    工具类:org.springframework.util.DigestUtils作用:计算字节数组、输入流的md5摘要所在模块:spring-core方法描述Stringmd5DigestAsHex(byte[]bytes)返回字节数组的md5摘要(计算字符串)Stringmd5DigestAsHex(InputStreaminputStream)返回输入流的md5......
  • 管道通信(下)命名管道的使用实现简单的日志函数
     我们之前学习到的管道是没有名字的正因为没有没有名字所以最后选择的是让子进程继承父进程的方式来达到让父子进程看到同一份资源的方式。这也也就导致了匿名管道只能在具有血缘关系的进程进行进程间通信。但是我们需要进行进程间通信的场景并不是只有这一种的?如果是毫不相关的进......
  • 如何运行.sh文件?一键搞定!教你几种简单方法!
    如何运行.sh文件?一键搞定!教你几种简单方法!.sh文件是一种使用Shell语言编写的脚本文件,它可以在Linux或Unix系统中执行一系列的命令。要运行.sh文件,您需要有一个支持Shell语言的解释器,例如bash、zsh或ksh。一、如果您使用的是Linux或Unix系统,您可以使用以下方法之一来运行.sh文件:1......
  • 这个插件厉害了!助你一键生成网页、视频总结!
    大家好,我是Java陈序员。如今是信息时代,想必大家经常上网冲浪!互联网的信息纷乱繁杂,各种广告、标题党等,大大的影响了我们获取信息的效率!那么有没有一款工具可以帮助我们快速高效的总结网页信息呢?答案是有的,今天给大家介绍一个浏览器插件,基于AI实现总结网页、视频等资源信息。......
  • 1.7 - 命名空间与作用域
    1.7.1命名空间命名空间(NameSpace)是一个从名称到对象的映射。大部分命名空间由字典实现,内置命名空间由 builtins模块实现。命名空间之间是独立的,避免了命名冲突。 1.7.2命名空间的分类1)内置命名空间包含所有Python内置对象的名称,在 解释器启动时 创......
  • MD5加密方式(已封装可直接用)
    两个usingusingSystem.Security.Cryptography;usingSystem.Text;一块代码publicstaticstringGenerateMD5(stringtxt){using(MD5mi=MD5.Create()){byte[]buffer=Encoding.Default.GetBytes(txt);......