最近公司开发了一些新的东西,一个一个改实在太麻烦了,作为一个运维思来想去还是写了一点批处理命令,毕竟在windows上面通用,外出也能用得到。闲话少说了下面是主题
按格式批量重命名文件
案例:
2pm.txt
218763m.txt
167238m.txt
先附上源代码:
@echo off
dir .txt /B >list.txt
setlocal enabledelayedexpansion
for /f %%i in (list.txt) do (
set M=%%i
for /f “delims=m” %%j in (list.txt) do (
set N=%%j
ren !M! !N!.txt
)
)
del list.txt
食用方法:放到需要更改的目录下面
解释:
第二行首先读取文件内所有文件的名字,全部存在list.txt文本文件中,这个没有会自动创建。我这里限制了格式为txt,要想全部都读取更改为*.* 但是我这里不太建议
第三行延迟变量
第四行 首先读取list文本文件里面每一行的内容存在%%i中,使用M进行存储
这里list.txt第一次M存储的内容是2pm.txt
第六行比较重要 delims中限定划分关键字,我这里是字符m,可以是_各种符号
第七行 把限制关键词前面的内容提取到%%j中,并用N进行存储
这里list.txt中第一次N存储的内容是2p
第八行 固定格式!M!提取内容,使用ren改变文件名字
最终案例更改结果为
2p.txt
218763.txt
167238.txt
附:如果要提取后面的内容,使用tokens即可。这里不只是txt改txt,如果想jpg变png这种,改文件名又改后缀的,上面代码ren中改动即可。
批量文件生成
公司项目中有些需要做忽略文件,要生成*.ignore文件,这里用这个打个比方,比如我文件夹名字叫1 ,要生成1.ignore的文件,比如文件夹中又 1 2 3 4 5 6 7的文件夹,要生成对应文件夹的忽略文件1.ignore 2.ignore 3.ignore ----7.ignore。
因为这个用的很少,使用者应该有一定基础直接附上源代码
@echo off
setlocal enabledelayedexpansion
cd assets
md .syndication
dir . /B >list.txt
for /f %%i in (list.txt) do (
set M=%%i
/B>.syndication!M!.ignore)
del list.txt
rem del %cd%.syndication\ignore.bat.ignore
del %cd%.syndication\list.txt.ignore
del %cd%.syndication.syndication.ignore
cd…
rd /s /q %cd%.syndication
move %cd%\assets.syndication %cd%
这个代码针对性比较强。仅作为提供思路进行参考