Windows下批处理修改文件名以及删除文件中重复名

批处理

批处理文件是扩展名为·bat 或·cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。
在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。

删除重复

删除当前文件夹下文件名中的“xxx”内容

@echo off& setlocal enabledelayedexpansion

for /f "delims=" %%1 in ('dir /a /b') do (set wind=%%1

ren "%%~1" "!wind:这里填要删除的内容=!")

批量修改文件名

将遍历当前文件中文件名,修改为5.txt 6.txt……
但要注意遍历顺序未必按原来的顺序

@echo off
setlocal enabledelayedexpansion
set n=5
for /f %%i in ('dir /b *') do (
ren "%%i" !n!.txt
set /a n+=1)
echo 批量重命名完成! 
pause

在要改动文件的相同路径下,新建txt,粘贴入上面之一的内容,将文件后缀改为.bat,双击执行


常见批处理文法

echo、@、call、pause、rem 是批处理文件最常用的几个命令
echo 表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@ 与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。
call 调用另一条批处理文件(如果直接调用别的批处理文件 ,执行完那条命令后将无法执行当前文件后续命令)
pause 运行此句会暂停,显示Press any key to continue… 等待用户按任意键后继续
rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的

另外一些相关语法:
set
显示、设置或删除变量。
显示变量:set 或 set s 前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值。
设置变量:set aa=1此句命令便可向变量aa赋值1,批处理中不区分数据类型
删除变量:set aa= 此句命令即可删除变量aa。

setlocal
是指批处理本地化的一种操作,使启动批处理文件中环境变量的本地化。本地化将持续到出现匹配的 endlocal 命令或者到达批处理文件结尾为止。

语法
setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion}[1]
参数
enableextensions
启用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
disableextensions
禁用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
注1:在XP中并没有看到命令扩展的使用.
enabledelayedexpansion
启用变量延迟,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
disabledelayedexpansion
禁用变量延迟,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
使用setlocal让变量本地化

dir
显示目录中的文件和子目录列表
dir 显示当前目录中的文件和子目录
dir /a 显示当前目录中的文件和子目录,包括隐藏文件和系统文件
dir /s /b /d
/s查找当前目录以及所有子目录下的文件
/b舍弃标题与摘要内容
dir .exe /s 显示当前目录和子目录里所有的.exe文件其中 是通配符,代表所有的文件名,通配符 ? 代表任意一个字符

ren文件重命名
ren 1.txt 2.bak 把 1.txt 更名为 2.bak
ren .txt .ini 把当前目录里所有.txt文件改成.ini文件

符号

单引号,是执行引号里的命令
双引号,是引用的内容,如字符串
波浪线,是扩充字符串
& 连接符
连接两个命令 , 注意 不论前面的命令是否成功执行 后面的命令都将执行
&& 连接符
连接两个命令 , 注意 仅当前面的命令成功执行时 后面的命令才会被执行
|| 连接符
连接两个命令 , 注意 仅当前面的命令执行失败时 后面的命令才会被执行
| 传递符
将前面命令的结果 传递给后面的命令使用 ,类似Linux pipe
^ 转义符 [脱字符] ,脱去特殊符号的作用 使之成为一个纯粹的符号
比如,输出字符串 &&&&& :echo ^&^&^&^&^&
% 百分号
在for命令in前,后面接一个字符(可以是字母、数字或者一些特定字符),表示指定一个循环或者遍历指标变量。;
另外还可以是命令行传递给批处理的参数:

@echo off
echo %0
echo %1
echo %2
echo %*

在命令行输入test.bat “/a” /b /c /d,会输出:
test.bat — 第0个参数
“/a”
/b
“/a” /b /c /d

~
① 在for中表示使用增强的变量扩展。
② 在%var:~n,m%中表示使用扩展环境变量指定位置的字符串。
③ 在set/a中表示一元运算符,将操作数按位取反。
! 在set /a中一元运算符,表示逻辑非

for 循环

FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令
  作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果。
  注意:在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable,而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
  关于:for命令可以带参数或不带参数,带参数时支持以下参数:/d /l /r /f
  /d (参数只能显示当前目录下的目录名字),这个参数主要用于目录搜索,不会搜索文件,/D 参数只能显示当前目录下的目录名字
   /R (搜索指定路径及所有子目录中与set相符合的所有文件),意是指定路径及所有子目录
   /L (该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step):for /l %%i in (1,1,5) do @echo %%i –输出1 2 3 4 5
   /F (使用文件解析来处理命令输出、字符串及文件内容。)

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值