批处理实现批量修改文件名_DOS/BAT

我们已经会使用循环命令对大量文件改名进行批量处理。但总结一下,该批处理并不是很健壮。

判断一个程序的好坏,往往不是站在程序员的角度,而从用户的角度出发。

比如:在用户使用它的时候,如果输入了不正确的路径格式怎么办?如果输入了含有非法符号的前缀怎么办?输入的扩展名也有问题怎么办?改完名后看不到是否执行成功的反馈信息,等等。带着这些想法,我们将原程序再次修改一下。

:::::::批量修改文件名.bat:::::::
@echo off
title 批量修改文件名
setlocal EnableDelayedExpansion
:: 启用延迟变量扩充

:GetPath
set zpath=%CD%
:: 对变量进行初始化,防止用户不输入而直接跳过。其中%CD%表示当前路径
set /p zpath=请输入目标文件所在的路径:
if %zpath:~0,1%%zpath:~-1%=="" set zpath=%zpath:~1,-1%
:: 检查变量 zpath 的第一个和最后一个字符是否为 "" ,是的话就去掉
if not exist "%zpath%" goto :GetPath
:: 如果 zpath 值的路径不存在,就得跳转回去,要求重新输入

:GetPrefix
set prefix=未命名
set /p prefix=请输入文件名前缀(不能包含以下字符\/:*?"<>|):
for /f "delims=\/:*?<>| tokens=2" %%i in ("z%prefix%z") do goto :GetPrefix
:: 这里对变量 perfix 进行检查,发现有非法符号便跳转到 :GetPrefix
:: 事实上,这里并没有对双引号 " 进行检测,因为双引号无法在此被转义为可用的分隔符
:: 即使是在这个程序里,不正确地使用双引号也会引起程序异常而退出。
:: 因此,想把它做的非常人性化并不是一件容易的事情

:GetExt
set ext=.*
set /p ext=请输入文件的扩展名(不输入则表示所有类型):
if not "%ext:~0,1%"=="." set ext=.%ext%
:: 检查变量 ext 的第一个是否为句点 . ,不是的话就加上
:: 建议这里对变量 ext 也检查一下,发现有除*外的非法符号便跳转到 :GetExt

set answer=N
echo.
echo 您试图将 %zpath%\ 里的所有 %ext% 类型的文件以 %prefix% 为前缀名进行批量改名,是否继续?
set /p answer=继续请输入 Y ,输入其它键放弃...
if "%answer%"=="Y" goto :ReadyToRename
if "%answer%"=="y" goto :ReadyToRename

echo 放弃文件改名,按任意键退出... & goto :PauseThenQuit

:ReadyToRename

set /a num=0
echo.

if "%ext%"==".*" (
  for %%i in ("%zpath%\*%ext%") do (
    set /a num+=1
    ren "%%i" "%prefix%!num!%%~xi" || echo 文件 %%i 改名失败 && set /a num-=1
  )
) else (
  for %%i in ("%zpath%\*%ext%") do (
    set /a num+=1
    ren "%%i" "%prefix%!num!%ext%" || echo 文件 %%i 改名失败 && set /a num-=1
  )
)

if %num%==0 echo %zpath%\ 里未发现任何文件。按任意键退出... & goto :PauseThenQuit

echo 文件改名完成,按任意键退出...

:PauseThenQuit
pause>nul
::::::::::::::::::::::::::::::::

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索批处理
修改文件名
bat批处理修改文件名、批处理批量修改文件名、批量改文件名 批处理、bat批量修改文件名、批量替换文件名 bat,以便于您获取更多的相关知识。

时间: 2024-10-27 02:39:58

批处理实现批量修改文件名_DOS/BAT的相关文章

Excel2003使用重命名命令ren结合批处理实现批量修改文件名

  很多新手朋友们遇到了这样的一个问题就是如何批量处理修改文件名?大家可能都没有发现在excel中有一个重命名命令ren,使用它可以快速完成批量处理文件名,下面有个不错的教程,大家可以尝试操作下. 描述:批量更改指定文件夹中的文件名,并且为其加上编号,比如1-,2-,假设指定文件夹为A,包含若干文件和子文件夹,先将A文件夹中的文件编号,再对子文件夹B中的文件编号,子文件夹B中依旧包含子文件夹和文件,编号方法与A一样但是要接着A的序号,比如A中有3个文件,那么B中的文件就从4开始 解决:可以使用<

批量修改文件名的脚本bat\python\shell

经常会遇到批量修改文件名的时候,比如下载了一批mp3文件.这些文件名都带有统一的前缀,比如"儿歌-***.mp3".在听音乐时有时只能回滚前几个文字,这时就可以使用该脚本批量去掉前缀. 一.BAT脚本 二.python脚本 三.shell脚本

批量修改文件名的简单方法

今天遇到一个朋友问:如何批量修改文件名?原有文件名没有规则,比如员工号或者学籍号,修改后的文件名要求是姓名或者是身份证号.下面我们说一种较为简单的方法来解决批量修改文件名 的问题. 整体思路:我们要有一个原文件名和新文件名的对应关系,然后结合重命名命令ren 使用批处理 bat文件解决. 找一个实际案例为例稍稍详细的说明一下:假如我们要将原为员工号为名字的照片文件修改为身份证号为名字的照片文件. 第一步,我们应该从财务或者人事那里要到人员的信息对照表,实在没有,我们可以做一个,用excel来制作

批量修改文件名

问题描述 比如一个文件夹下面有个多个文件名比如a_list-1.txta_list-2.txta_list-3.txt这样的怎么批量修改文件名! 解决方案 解决方案二: 解决方案三: 解决方案四:用程序的话,一个一个修改就可以了吧.System.IO.File.Move(@"C:From.txt",@"C:TO.txt");解决方案五:在文件目录下新建一个txt文件,改名为X.bat,拷贝下面代码,然后运行."a_!a!.txt"新文件名样式@e

如何批量修改文件名?

  通常我们使用手机或者相机拍摄了一堆照片拷贝到电脑之后,照片的命名通常都是随机混乱的,如果要规范文件命名,你是不是会去一个一个去修改文件名呢?其实完全不需要这么麻烦,今天小编就来教大家一个批量快速修改照片文件名和添加前缀方法,方法技巧如下. 如何批量修改文件名? 一.首先将所有照片文件放置在一个文件夹当中,然后同时按住键盘上的 Ctrl + A 组合快捷键选中所有照片文件,全部选中后,再按 F2 键进行批量重命名,并输入新名称,比如"极客青年"如下图. Ps.笔记本用户,如果遇到按F

用Excel和DOS命令批量修改文件名

在你的Windows电脑上批量修改文件名是非常简单的.选择所有的文件,按F2,然后输入一下描述性的文本. Windows将会在每个文件名中加上一个唯一的序列数字. 这是一个相当快捷的解决方案,但是并不是很灵活,因为你不能自定义修改的方式. 例如,你如何将当前的日期加在文件名中?或者你想替换掉文件名中的几个文字或字符(如一个拼写错误)?或者你想文件按照一个不同的重命名系统去修改,像这样file-A.jpg,而不是默认的file(1).jpg. 为了有效的批量修改文件名,你可以学习一些有点复杂的sh

Excel怎么批量修改文件名

  Excel怎么批量修改文件名?在使用电脑和网络进行写文章时,经常要从网上下载一些图片进行配图,而网络上的文件名千奇百怪,需要将图片文件按顺序编号.因此就需要批量修改文件名,下面就和大家一起分享这个方法. 第一步.在c盘建立一个文件夹,将下载的图片放置于该文件夹中,如下图所示. 第二步.鼠标左键点击,开始->运行->在对话框中输入字母"cmd",进入dos模式 ,如下图所示. 第三步.在dos模式输入命令行"cd c:pic"然后回车,再输入命令行&q

Win7批量修改文件名的方法

  要实现Win7批量修改文件名 ,需要修改的文件放置在一个文件夹上面,然后将该文件夹拷贝到C盘的目录下.比如保存文件名为"picture". 操作步骤 1. 然后点击开始菜单的"运行",在运行的输入框上输入"CMD"命令,然后敲回车键进入到命令提示符窗口. 2. 然后在上面依次输入"cd c:picture",回车键,在输入"dir /b>rename.xls". 3. 这样我们回到picture文

如何快速批量修改文件名

  步骤1: 点击Windows左下角的"开始"菜单,选择"运行",输入 cmd ,回车进入命令行. 步骤2: 用 cd 命令进入到你想批量修改文件名的文件夹目录.比如这里,我想要进入C盘中的pics文件夹. cd cd pics 步骤3: 输入 dir /b 你可以看见当前文件夹目录下面全部文件的列表. 输入 dir /b > pics.xls 将的列表输出到pics.xls电子表格. 步骤4: 有趣的东西现在才开始.打开Excel或Google Docs电