批量重命名
三种批量重命名的方法,第三种的quicker是终极解决方案
这几天写文章的时候,因为特殊的原因,文章和文件夹名里要求不能包含空格,开始是自己手动一个个的改,后来发现太麻烦,于是琢磨着有没有好的方法。
1.我最熟悉的bat
现在有大模型,也就不用自己写代码了,直接需求发过去:
1. 需求背景
创建一个批处理文件把文件名中的空格替换成-。
2. 具体需求
批处理文件位置:将批处理文件命名为replace_spaces.bat,放置在 F:\Wilson\sim 目录下。该目录不包含空格,可避免路径在使用过程中出现解析问题。
功能实现:执行该批处理文件时,把执行命令所在文件夹(即当前工作目录)下所有文件名称里的空格替换为连字符-,不包括子目录中的文件和文件夹。
执行方式:在任意文件夹下打开 PowerShell 后,通过输入批处理文件的完整路径来执行它。批处理文件会自动处理当前 PowerShell 所在文件夹下的所有文件名称。
特殊情况处理:要考虑一些特殊情况,如文件名中已经包含连字符 - 的情况,应保持其不变,仅替换空格;同时,要确保不会对系统文件或受保护文件进行误操作,避免因名称替换导致文件无法正常使用。
反馈机制:在处理过程中,提供相应的反馈信息,例如显示正在处理的文件名,处理完成后给出处理结果的提示,如成功处理了多少个文件,或者是否有处理失败的情况等。
3. 代码实现
@echo off
setlocal enabledelayedexpansion
rem 遍历当前目录下的所有文件和文件夹
for /f "delims=" %%F in ('dir /b /a-d-h-s') do (
set "filename=%%F"
set "newname=!filename: =-!"
if not "!filename!"=="!newname!" (
echo Renaming "!filename!" to "!newname!"
ren "!filename!" "!newname!"
)
)
for /f "delims=" %%D in ('dir /b /ad-h-s') do (
set "dirname=%%D"
set "newdirname=!dirname: =-!"
if not "!dirname!"=="!newdirname!" (
echo Renaming "!dirname!" to "!newdirname!"
ren "!dirname!" "!newdirname!"
)
)
echo Process completed.
endlocal
大模型的代码生成后,在想执行的文件夹打开powershell,执行下面的代码
start-Process -FilePath "F:\Wilson\sim\replace_spaces.bat"
结果完美,一次性成功,所有文件和文件夹名里的空格都被替换成了-。
2.效率神器quicker初阶用法
方法1每次还要打开powershell,还要输入命令,还是不够简洁,于是把这个工作流做成一键执行的命令,每次用的时候在quicker里一键调用就可以了,这样确实可行,简单不少。
3.效率神器quicker终极用法
用方法2的时候发现quicker里有更简单的方法,选中要重命名的文件和文件夹,点击EVER重命名,查找替换,把空格替换为-,点击确定,一键完成,不用编程,不用动脑,而且EVER重命名里还有各种更强大的命名方法,堪称重命名的终极效率神器,值得推荐。
quicker的用法还值得大力挖掘。
执行结果