本帖最后由 呆萌鼠 于 2025-10-29 12:43 编辑
自用名称相关的bat分享
有时候在处理软件或文件时候需要复制名称、搜索本地同名文件或网上搜索等等操作比较繁琐,本人根据豆包和deepseek制作了几个bat,转成exe文件使用很方便,今天分享给坛友,希望有感兴趣的使用体验一下,我自己认为还是可以提高一些速度的。 以下内容只在Windows11 23H2中测试没有问题,将bat文件(或转成exe文件可以隐藏黑运行框)用右键超级菜单管理软件ContextMenuManager安装在鼠标右键菜单使用。你的系统编码如果是UTF-8的请在第一行@echo off后加上chcp 65001 >nul 2>&1以便支持中文路径 1复制名称(对于文件或文件夹) - @echo off
- :: 如果没有提供路径参数,提示用户
- if "%~1"=="" (
- echo 请在资源管理器中选定文件或文件夹并右键选择此批处理脚本。
- pause
- exit /b
- )
- :: 获取文件或文件夹路径
- set "selected=%~1"
- :: 获取文件或文件夹的名称
- REM 判断是文件还是文件夹
- if exist "%selected%\*" (
- REM 是文件夹
- for /D %%F in ("%selected%") do (
- set "name=%%~nxF"
- echo 文件夹的全名是:%%~nxF
- )
- ) else (
- REM 是文件
- for %%F in ("%selected%") do (
- set "name=%%~nF"
- echo 文件的名称(不带扩展名)是:%%~nF
- )
- )
- :: 将文件或文件夹名称复制到剪贴板
- echo %name% | clip
- echo 文件名 "%name%" 已复制到剪贴板。
- :: 退出并关闭命令提示符窗口
- exit
复制代码
2剪切板重命名(对于文件或文件夹) - @echo off
- chcp 65001 >nul
- setlocal enabledelayedexpansion
- rem 获取剪贴板内容
- for /f "usebackq delims=" %%a in (`powershell -command "Get-Clipboard"`) do (
- set "clipboard=%%a"
- )
- rem 获取鼠标指定的文件或文件夹路径
- set "targetPath=%~1"
- rem 判断是文件还是文件夹
- if exist "%targetPath%" (
- rem 处理文件夹
- set "parentDir=%~dp1"
- set "newFolderName=!clipboard!"
- ren "%targetPath%" "!newFolderName!"
- ) else (
- rem 处理文件
- set "fileDir=%~dp1"
- set "fileName=%~n1"
- set "fileExt=%~x1"
- set "newFileName=!clipboard!!fileExt!"
- ren "%targetPath%" "!newFileName!"
- )
- echo 重命名操作完成。
- endlocal
复制代码
3以名称建立文件夹(对于文件) 4Everything搜索(对于文件或文件夹) 5默认浏览器的必应搜索、百度搜索、哔站搜索、搜狗搜索、谷歌搜索等等网上搜索,可以自己添加网站搜索入口。(对于文件或文件夹) 6批量1(或0)开始整数不分类重命名(对于文件):修改其中代码set count=1的1为0,就是先从0开始命名,否则就是从1开始。 创建好bat文件后,存放于不易删除的位置(我是放在Program Files中自建的ZZ文件夹中),用右键超级菜单ContextMenuManager.NET软件在文件一栏创建多级菜单为“名称”,子项目里将所有bat(或exe)按喜欢的次序添加调整。
相关软件有3个 右键超级菜单ContextMenuManager BAT转EXE3.2 Everything汉化安装版本(因为是立即搜索,所以必须用安装版以解决绿色版开始运行时候的扫描过程)
使用:在文件或文件夹处打开鼠标右键找到“名称”则显示 复制名称→→复制该文件或文件夹的名称 剪切板重命名→→用剪切板的文本将该文件或文件夹命名 以名称建立文件夹→→在当前文件夹内,将此文件的名称作为新建文件夹的名称 Everything搜索→→搜索本地该文件名称(不带扩展名)或或文件夹名称 网站搜索→→该文件名称(不带扩展名)或文件夹名称在默认浏览器的必应搜索、百度搜索、哔站搜索等等中搜索 批量重命名→→该文件夹内所有文件(忽略扩展名)批量从1(或0)开始整数不分类重命名
由于级别不够而且代码多比较乱都放在盘里了,所以网址代码都在分享的包里,,包里包含bat文件、转换的64位不可见exe、安装样式: 。
分享地址:wwcg.lanzouu.com/ikIRT39iswhi密码:g5wm
最后补充一下,有时候网上搜索打不开是由于历史记录中存储过多的搜索记录导致,所以清除历史记录即可;或者搜索历史记录的关键词并且删除,如bing,删除搜索记录即可。
25年10月29日更新:添加了批量分类整数重命名的代码
- @echo off
- setlocal enabledelayedexpansion
- set "self=%~nx0"
- set "prefix=我+"
- :: 第一步:添加前缀(确保每个文件只添加一次)
- echo 【1/3】添加前缀 "%prefix%"...
- for /f "delims=" %%f in ('dir /b /a-d 2^>nul') do (
- if "%%f" neq "!self!" (
- :: 检查是否已添加前缀,未添加则执行
- echo "%%f" | findstr /b /c:"%prefix%" >nul || (
- ren "%%f" "%prefix%%%f"
- if !errorlevel! equ 0 (
- echo 已添加:%%f → %prefix%%%f
- ) else (
- echo 失败:%%f(可能被占用)
- )
- )
- )
- )
- :: 第二步:生成扩展名列表文件(用临时文件存储,避免变量解析问题)
- echo.
- echo 【2/3】收集所有扩展名...
- set "ext_file=%temp%\ext_list.tmp"
- del /q "%ext_file%" 2>nul >nul
- for /f "delims=" %%f in ('dir /b /a-d "%prefix%*" 2^>nul') do (
- set "ext=%%~xf"
- :: 无扩展名用特殊标识
- if "!ext!"=="" set "ext=[无扩展名]"
- :: 写入临时文件(去重)
- findstr /x "!ext!" "%ext_file%" >nul || (
- echo !ext!>>"%ext_file%"
- echo 发现扩展名:!ext!
- )
- )
- :: 检查是否有扩展名记录
- if not exist "%ext_file%" (
- echo 错误:未找到带前缀的文件,请检查第一步
- pause
- exit
- )
- :: 第三步:按临时文件中的扩展名列表逐个处理
- echo.
- echo 【3/3】按扩展名分类重命名...
- for /f "delims=" %%e in (%ext_file%) do (
- echo.
- echo 处理扩展名:%%e
- set "count=1"
- :: 处理无扩展名文件
- if "%%e"=="[无扩展名]" (
- for /f "delims=" %%f in ('dir /b /a-d "%prefix%*" ^| findstr /v "\." 2^>nul') do (
- ren "%%f" "!count!"
- echo 重命名:%%f → !count!
- set /a count+=1
- )
- ) else (
- :: 处理有扩展名文件
- for /f "delims=" %%f in ('dir /b /a-d "%prefix%*%%e" 2^>nul') do (
- ren "%%f" "!count!%%e"
- echo 重命名:%%f → !count!%%e
- set /a count+=1
- )
- )
- )
- :: 清理临时文件
- del /q "%ext_file%" 2>nul >nul
- echo.
- echo 所有扩展名处理完成
- exit
复制代码
为节省时间特意做了注册表导入,同时纠正了有些带有空格的名称搜索不了的问题
分享地址:wwcg.lanzouu.com/i8ygN39m6acd 密码:28aq
|