批处理重命名系列案例代码

批处理用于文本/文件的操作确实非常简单有力!不用多么复杂的代码,仅一个记事本加上简洁的代码即可搞定大部分文本/文件的操作,下面记录下我用过的一些代码,基本都是我在百度回答知友的一些代码,既给涧客们参考,也让起到备忘的作用。。。。

案例一、

想把一个文件夹里的全部文件都命名成001,002……这样按顺序,什么顺序无所谓,只要名字都变了就行,谁帮忙写个

我给出的代码:

@echo off
setlocal enabledelayedexpansion
set var=1000
for /r "%~dp0" %%i in (*.*) do (
 set /a var+=1
 if not "%%~nxi"=="%~nx0" ren "%%i" !var:~-3!%%~xi
)
pause>nul
echo 处理完毕,任意键退出...
exit

简单解释:
1.使用for /r 遍历当前目录(%~dp0)下所有文件,效率比for /f + dir /s /b 高;
2.if not语句用于排除bat文件本身,全路径是%0,拓展到bat文件名:%~nx0;
3.利用变量1000开始累加,每次利用!var:~-3!取得后三位,即依次为001、002、003...
Ps:var=1000,那么此脚本最多重命名999个文件,再多将出现覆盖错误,如何修改?请涧客思考,最好能在评论中留下您的代码,呵呵!(比较简单,大虾请勿拍砖!)

案例二、

“比如,我有一个文件夹里的文件都是X1,、X2…X51,我有个的文件名字是X15.ass,用完以后变成[Yousei-raws] Soul Eater 14 [BDrip 1280x720 x264 FLAC].ass代码如下:

@echo off
set a=0
setlocal EnableDelayedExpansion
for %%n in (*.ass) do (
ren "%%n" "[Yousei-raws] Soul Eater !a! [BDrip 1280x720 x264 FLAC].ass"
set /A a+=1
)

如何才能让顺序变正确,顺便说一下,最后一个51变成了1.

我给出的代码:

@echo off
set a=100
setlocal EnableDelayedExpansion
for /f "delims=*" %%n in ('dir /b *.ass') do (
  set /a a+=1
  ren "%%n" "[Yousei-raws] Soul Eater !a:~-2! [BDrip 1280x720 x264 FLAC].ass"
)

简单解释:因为a的值,被初始化为0,所以第一个文件就是0,第二个是1,那么第15个就是14了。。。代码调换了下顺序,先给a+1,让重命名时a的值为1即可。

Ps:此处使用for+dir 的方式,效率虽然会低一点,但是出错率也降低了,容易懂!当然一样可以用for /r。

(0)

相关推荐

  • 重命名administrator账号的批处理文件

    wmic useraccount where name='Administrator' call Rename admin

  • 批处理应用:恢复Mcafee重命名的可疑病毒文件扩展名

    Mcafee识别到可疑病毒文件,但病毒库里没有病毒定义,就会把文件扩展名命名为vir或vxe,固建立此批处理文件,用已恢复被修改掉的exe文件 MCAFEE更名原则: Original Renamed Description Not V?? V?? File extensions that do not start with v are renamed with v as the initial letter of the file extension. For example, MYFILE.

  • 全盘搜索指定文件并拷贝到指定位置[自动重命名]的批处理

    复制代码 代码如下: @echo off&setlocal enabledelayedexpansion set num=0 set /p filename=请输入要查找的文件名[包含文件扩展名]: set /p newpath=请输入所要拷贝到的指定目录: if not exist !newpath! md !newpath! 1>nul 2>nul set zh=!newpath:~-1! if !zh! NEQ "\" set newpath=!newpath

  • 用批处理实现将文件以数字重命名的代码

    要求:    1.不能改变a.txt内容的顺序    2.将当前目录下的所有jpg文件以序号的形式重命名 如:从1-16    3.如果有16个文件,必须重命名为1-16,不允许出现16之后的序号 a.txt 内容: 复制代码 代码如下: 2.jpg 1.jpg a.jpg 5ww.jpg c.jpg f.jpg rty.jpg 3.jpg 11.jpg b.jpg 6.jpg e.jpg 8.jpg 111.jpg 7.jpg 30.jpg a.txt中的内容其实就是当前文件夹下的jpg文件列

  • 批处理重命名特殊文件名的代码

    一b!a!1235@_ s%#8i 三 c.rar h^e12 0~%l%!p!@. s321-的文件.txt %o%%% !O!ffi9~ ce$- Wor8d29 文档.docx 重命名.bat 图1: 要求运行批处理将这三个文件文件名中的数字.汉字.特殊字符全部(含空格)去掉,而重命名为只含字母的文件,但 后缀名不能更改,同时批处理自身名字不能更改,重命名后: basic.rar helps.txt oOfficeWor.docx 重命名.bat 图2: 要求:代码简洁.通用.效率不至于太

  • 文件夹取其名称前两位重命名的批处理代码

    将所有文件夹取其名称前两位重命名的批处理脚本: 复制代码 代码如下: @echo off& setlocal enableDelayedExpansion set n = 41029 for /f "delims=" %%a in ('dir /ad /b') do (set a=%%a ren "%%a" 41029!a:~0,2! ) pause 对以上代码的解释: 其中 /ad 是只显示目录,就是剔除文件,只显示文件夹. /b是使用空格式(没有标题信息

  • 重命名批处理python脚本

    将Copy of ********.bmp或者Copy of Copy of ********.bmp 此类文件统一命名为********0.bmp 或者********00.bmp等格式,后面的0的个数代表********.bmp出现的次数+1.写了个下面的小脚本: 复制代码 代码如下: import os """ 这个程序是用来将文件名改名,因为在文件夹里面有很多Copy of 重文件名,因此去掉windows 重命名风格而换用新的累加命名机制 作者:chenxofHit

  • Python批处理删除和重命名文件夹的实例

    1. 删除当前目录下不含有指定文件类型的文件夹 #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import os import shutil pwd = os.getcwd() L = os.listdir(".") f = open("out.txt", "w") for dirname in L: if os.path.isdir(dirname): print("dir

  • 用批处理重命名文本文件名的代码

    实现代码1@echo off&setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir/b *.txt') do (    set /a n+=1    if not exist "!n!.txt" (ren "%%a" "!n!.txt") else call :loop "%%a" ) pause&exit :loop  

  • C#使用OpenCv图像批处理并改变图片大小并且重命名

    添加NuGet包 选择最新版就好了 安装完成后右键项目重新生成方案 使用OpenCvSharp.CPlusPlus命名空间 using OpenCvSharp.CPlusPlus; 写一个函数用来改变图片大小并且重新命名 read_path是存储图片的文件夹的路径,write_path是改变后图片存储的文件夹路径,filename是图片重命名,width和height分别为图片修改后的宽和高 public static void ResizeImg(String read_path,String

  • 批处理应用根据文件内容进行重命名操作

    我想实现以下的目的: 首先,我有个.dat文件,名字是固定的,需要更改这个文件名. .dat第1行的内容是: 10107xxxxxx,代表的意思是2007.01.01,后面的x内容不固定.如果是1~9月,则第1个字符是空的. 现在要根据这行内容来改文件名.比如10107XXXXXX,改为c01-0101.cvs. 110107xxxxxx,改为c01-1101.cvs 请问该怎么写这个BAT文件. 分析: 读出第一行内容到一变量 区变量的第5个字符,可以判断是否为0 1)如果是0,取变量前2位为

  • 批处理ren重命名的方式

    批处理之ren命令-可批量修改文件名 1.批处理批量修改文件后缀名(假设我需要把一个文件夹中的很多txt文件改为sql文件): 1)在需要被处理的文件的文件夹里先新建一个txt文本,然后在文本中写入:    ren *.txt *.sql 2)保存文件后关闭,然后将这个文件的后缀名改为.bat 3)双击这个bat文件,ok,这个文件夹中所有的txt文件都变成sql文件了~~ 2.ren命令用法说明: 1)ren是"rename(重命名)"的简写 2)命令格式: REN [Drive:]

  • 批处理应用:根据文件内容进行重命名操作

    我想实现以下的目的: 首先,我有个.dat文件,名字是固定的,需要更改这个文件名. .dat第1行的内容是: 10107xxxxxx,代表的意思是2007.01.01,后面的x内容不固定.如果是1~9月,则第1个字符是空的. 现在要根据这行内容来改文件名.比如10107XXXXXX,改为c01-0101.cvs. 110107xxxxxx,改为c01-1101.cvs 请问该怎么写这个BAT文件. 分析: 读出第一行内容到一变量 区变量的第5个字符,可以判断是否为0  1)如果是0,取变量前2位

随机推荐