精华内容
参与话题
问答
  • 今天在工作时遇到了一个情况,通过高速扫描仪扫描的文件是以图片的形式保存到本地硬盘上的,但是扫描仪给图片命的名就... 思考了一下,Windows自带的CMD不是正好有重命名文件的功能嘛?使用ren命令就行啦。所以说,...

            今天在工作时遇到了一个情况,通过高速扫描仪扫描的文件是以图片的形式保存到本地硬盘上的,但是扫描仪给图片命的名就很混乱,并不是我想要的。作为一个强迫症,于是就想到了手动把这些名字改过来。但是这一整个文件夹6、700张图片,一个一个地F2去重命名工作了也是蛮吓人的。。。

            思考了一下,Windows自带的CMD不是正好有重命名文件的功能嘛?使用ren命令就行啦。所以说,如果我能在当前存放图片们的文件夹内运行一个循环,让它能够遍历当前文件夹下所有文件,然后做ren操作,理论上来讲就能完成文件的批量重命名了。

            说做咱就做!结合以前对CMD命令行的一些了解,加上查询到的相关语法,一个简单的文件批量重命名脚本便写好了。

    setlocal ENABLEDELAYEDEXPANSION
    for /r %%i in (.) do (
            set n=1000
            for /f "delims=" %%a in (' dir /b "%%i\*.jpg" 2^>nul ') do (
                    set /a n+=1
                    ren "%%i\%%a" "%filename%"!n:~1!%%~xa
            )
    )

            这里解释一下:

     

    setlocal ENABLEDELAYEDEXPANSION

    是“开启延迟环境变量扩展”的意思。顾名思义是将当前环境变量的赋值操作做一个延迟。而需要做延迟扩展的变量需要用 “!!”两个英文感叹号包裹起来。(这里做了延迟的变量是上面代码中的 n:~1)。因为批处理中有一个“预处理”的概念,批处理读取命令时是按行读取的,在对指令进行处理之前要完成必要的预处理工作。而这其中就包括对该行命令中的变量赋值。这里如果不使用setlocal ENABLEDELAYEDEXPANSION指令,则n一直到程序执行完,它的值都将会是1000而没有变化。详细解释大家可以参考:setlocal enabledelayedexpansion的作用

            然后是for循环,官方给出的解释是:

    相应的写法大家可以在cmd里面输入for /?去查看(中间有个空格喔)。

     

            需要说一下的是这里的 2^>nul 其实和一般的 2>nul 没区别。是因为放在了for循环中,所以需要对特殊符号 > 使用 ^ 进行转义。

     

    set /a n+=1

    表示给n赋值,每进行一次循环就把n加一。

    ren "%%i\%%a" "%filename%"!n:~1!%%~xa

    其中

    "%filename%"!n:~1!%%~xa

    是一个拼接的字符串。!n:~1!是使用了延迟的变量,表示取n向右位移一位的值。例如当 n=1001时,n:~1 的值为 001。

     ~xa中的a是上面的变量a,即文件的扩展名 .jpg。使用~x参数则表示将变量a的值直接拼接在前字符串的后面。

     

            至此,我们仅用输入文件名前缀,批处理脚本就能帮我们在前缀后面自动编号明明,行程一排整整齐齐的:xx001.jpg 酱婶儿的名字啦~

     

            最后考虑到脚本复用性,我们再对脚本做一丢丢修改,让它不止可以给 jpg 重命名,让他能给任意文件批量重命名。修改后的代码如下:

            

    @echo off     
    echo *******文件批量重命名*******   
    echo.
    echo.
     
     
    set /p filename=请输入文件名前缀:
    IF "%filename%"=="" set "filename=%%~ni"
     
    set /p suffix=请输入文件类型:
    IF "%suffix%"==""   echo.文件类型不能为空 &goto error
    IF NOT EXIST *.%suffix% echo.不存在该格式文件 &goto error
     
    setlocal ENABLEDELAYEDEXPANSION
    for /r %%i in (.) do (
            set n=1000
            for /f "delims=" %%a in (' dir /b "%%i\*.%suffix%" 2^>nul ') do (
                    set /a n+=1
                    ren "%%i\%%a" "%filename%"!n:~1!%%~xa
            )
    )
     
    echo. &pause
    exit
     
    :error
    echo. &pause

            毕竟也是花时间查了好久的,随手写篇日志记录一下~大笑

            OK,写完收工~

    【 个人博文链接:http://wishes-blog.cn/archives/rename-bat

    展开全文
  • Python 批量重命名工具

    2017-12-17 23:00:02
    Python 批量重命名工具,能够快速扩充重命名自定义后缀文件,而且待调试信息,支持二次开发
  • 批量重命名BAT实现

    2013-09-21 19:57:02
    批量重命名BAT实现 可以选择是否加前缀名称或顺序重命名
  • 文件进行批量随机重命名,批量重命名的bat文件
  • 文件批量重命名脚本

    2014-10-11 11:16:20
    自写,很简单也好用,用于批量重命名文件,可以试一下,也可以记事本打开自己修改代码
  • matlab文件批量重命名

    2016-07-22 16:47:59
    %批量重命名,type可以是'jpg','bmp','avi'等 %根据需要命名的规则可对程序进行适当修改 %该程序图片命结果为0101,0102,..,0115,0201,..,1515样式 % 其中n=15
  • 利用bat脚本批量 重命名/复制 文件

    万次阅读 2018-04-26 10:03:30
    在平时运维的时候,最繁琐的就是要每个月写运维记录的文档如excel表格,一个月30日要产生30个文件,拷30个运维记录文档的模版再进行重命名实在太麻烦了,所以想到copy模版之后可以用脚本来对文件进行重命名自己想要...

    在平时运维的时候,最繁琐的就是要每个月写运维记录的文档如excel表格,一个月30日要产生30个文件,拷30个运维记录文档的模版再进行重命名实在太麻烦了,所以想到copy模版之后可以用脚本来对文件进行重命名自己想要的效果,首先给出效果图



    下面给出脚本

    @echo off
    set /p m=请输入月份如:5(m):
    set a=0
    setlocal EnableDelayedExpansion
    dir /b .\*.xls | find /c /v "" >> .\tmp.txt
    set /p c=<.\tmp.txt
    del /a /f /q .\tmp.txt 
    
    for %%i in (*.xls) do (
    set /a a+=1
    if !a! gtr %c% (goto aa)
    echo !a!
    echo %%i 
    ren "%%i" "日常运维检查记录2018-%m%-!a!.xls"
    )
    :aa
    pause

    脚本解释:

    dir /b下面接上find命令来统计当前目录下的xls格式的文件数,这里假设我运维记录的文件使xls格式的,然后把统计的文件数写入txt文件中,例如有5个xls文件就会把5写入,然后从这个txt中读出这个数字赋值给c变量,再把这个txt文件删除

    后面的for循环就是重命名文件了,这里注意有一点,为什么我在for循环中要加个条件语句呢?这个条件语句的意思是一旦a变量(这里a代表着文件重命名中的文件名天数的后缀名,由1开始计数,直到达到文件夹中重命名的xls文件数为止)大于c变量(统计的用于重命名xls文件数),就会终止这个循环并且跳出到aa,这里发现在重命名文件的时候会循环会溢出多一次,也就是假设原来有5个xls文件要重命名,在用这个循环重命名的时候如果不加这个if语句来防止溢出,就会重命名了6次,从而把第一个重命名的文件再次重命名,这里给出图给大家看一下就知道了

    这里加入有5个3月份的运维检查记录文件


    假如我在代码中把if语句屏蔽了


    然后执行脚本,把这5个文件重命名成4月份的运维检查记录文件


    发现循环执行了6次,并且看到最后一次重命名把第一个重命名的文件4-1给替换调了4-6


    经过上面的解释,大家应该有个理解了把!

    在代码中我这里规定了重命名的文件后缀的年份是2018年,这里大家可以模仿月份的输入set /p来加上一个年份的输入,引用变量就可以重命名自己想要的年份后缀名,下面说下这个重命名脚本的使用规则,注意将脚本文件先保存成ansi编码的格式再在里面编辑含有中文的代码,不然重命名或者执行脚本的时候会报错喔

    重命名文件.bat
    1新建月份文件夹如:4月
    2关闭360等软件
    3复制运维记录的文件到月份文件夹下
    4把脚本放在月份文件夹下执行

    就可以看到当前文件夹下会有我们重命名的文件名字了


    其实与其重命名文件,大家也可以考虑用复制文件办法,这样就不用考虑重命名时候的溢出问题,下面给出文件复制的办法

    @echo off
    set /p year=请输入年份如:2018(year):
    set /p month=请输入月份如:4(month):
    set /p day=请输入这个月的天数如:30(day):
    if %day%==31 (
    for /l %%d in (1,1,%day%) do copy .\module.xls .\日常运维检查记录%year%-%month%-%%d.xls
    goto aa)
    if %day%==30 (
    for /l %%d in (1,1,%day%) do copy .\module.xls .\日常运维检查记录%year%-%month%-%%d.xls 
    goto aa)
    if %day%==29 (
    for /l %%d in (1,1,%day%) do copy .\module.xls .\日常运维检查记录%year%-%month%-%%d.xls
    goto aa)
    if %day%==28 (
    for /l %%d in (1,1,%day%) do copy .\module.xls .\日常运维检查记录%year%-%month%-%%d.xls 
    goto aa)
    if %day%==27 (
    for /l %%d in (1,1,%day%) do copy .\module.xls .\日常运维检查记录%year%-%month%-%%d.xls 
    goto aa)
    if %day%==26 (
    for /l %%d in (1,1,%day%) do copy .\module.xls .\日常运维检查记录%year%-%month%-%%d.xls 
    goto aa)
    
    echo "输入的天数不符合规则!"
    
    
    :aa
    pause
    exit 

    代码比较简单,这里我规定了要把module.xls这个运维记录的模版文件放在当前新建的月份文件夹下,然后通过复制这个文件来生成对应天数的运维检查记录文件,这里我规定了天数26-31天,同样要注意的是脚本的编码要是ansi编码

    下面给出操作方法和效果图

    批量复制文件.bat
    1新建月份文件夹如:4月
    2将模版文件更名为module.xls放在月份文件夹下

    3把脚本放在月份文件夹下面执行脚本输入参数







    展开全文
  • linux 中文件批量重命名

    千次阅读 2019-06-19 08:42:40
    linux 中文件批量重命名

    mv 命令与批量重命名

    linux 中文件重命名一般使用 mv 命令来完成。此命令以单个文件为参数将旧文件重命名为一个新的文件。如果要实现批量化重命名操作,用户需要自行编写程序。

    实现批量重命名

    最简单的实现

    	file=$(find ./ -name '*test*')
    	for i in $file;
    	do mv $i ${i//test/data}
    	done
    
    

    上面的实现中首先使用 find 命令来获取需要批量重命名的文件名并存储到变量 file 中。然后遍历变量内容,使用 bash 中的 pattern substitution 功能来生成新的文件名,以此文件名作为 mv 命令的参数来完成重命名工作。

    上述实现相当简单,它其实并不完整。文件名列表、待替换的文件名内容与替换字符串可以通过命令行参数来指定,这样就算是一个完整的功能。

    这里使用的 bash 模式替换功能并不常见,可以算作是 bash 的一个技巧。虽然能够解决问题,但总有点奇技淫巧的意味。

    使用 awk 的实现

    使用 awk 来完成相同的功能时,可以使用 awk 来完成文件名的替换并生成命令,然后调用 system 函数执行命令即可。

    下面是一个具体的实现:

    #!/usr/bin/gawk -f
    
    function parse_regex(string, regex_arg,    regex_cmd, sep, array_index)
    {
        if (string == "" ) {
            return 0
        }
        
        sep = substr(string, 2, 1)
    
        if (sep ~! /[[:punct:]]/) {
            print sep " is invalid" > "/dev/stderr"
            return 0
        }
        
        array_index = split(string, regex_cmd, sep)
        
        regex_arg["cmd"] = regex_cmd[1]
        regex_arg["regex"] = regex_cmd[2]
        regex_arg["replace"] = regex_cmd[3]
        regex_arg["opt"] = regex_cmd[4]
    
        return array_index;
    }
    
    function execute_substitute(string, regex_cmd)
    {
        if (string == "") {
            return ""
        }
        
        switch (regex_cmd["cmd"]) {
        case "s":
        default:
            if (regex_cmd["opt"] == "g") {
                gsub(regex_cmd["regex"], regex_cmd["replace"], string)
                return string
            } else {
                sub(regex_cmd["regex"], regex_cmd["replace"], string)
                return string
            }
        }
    }
    
    BEGIN {
        if (!parse_regex(ARGV[1], regex_cmd)) {
            print "invalid regex cmd" ARGV[1] >"/dev/stderr"
            exit 1
        }
    
        for (i = 2; i < ARGC; i++) {
            string = execute_substitute(ARGV[i], regex_cmd)
    
            if (string != ARGV[i]) { # add single quote to avoid special character problem
                cmd_buffer = "mv -i -v " "'"ARGV[i]"'" " " "'"string"'"
                system(cmd_buffer)
            }
        }
        
        exit 0
    }
    

    用户需要在命令行中指定类似于 sed 中的替换命令。这里仅仅实现了 ‘s’ 命令,不过由于时间原因它并不是一个很严格的实现。

    程序首先解析用户指定的替换命令,将字符串切割并放到一个哈希数组中。解析成功后首先执行替换,然后使用替换的结果生成命令行,调用 system 执行命令即可完成重命名工作。依次遍历命令行参数中指定的文件名来批量重命名文件。

    运行示例如下:

        [longyu@debian:17:00:23] awk $ ./rename.awk 's;awk;gawk;' *
        "alarm.ggawk分析.md" -> "alarm.gggawk分析.md"
        "anagram.ggawk分析" -> "anagram.gggawk分析"
        "egrep-ggawk分析.md" -> "egrep-gggawk分析.md"
        "ggawksed分析.md" -> "gggawksed分析.md"
        "使用ggawk生成代码的两种不同方式.md" -> "使用gggawk生成代码的两种不同方式.md"
    

    使用 rename 命令

    最近发现了一个更为方便的脚本——rename。它是一个 perl 脚本,支持批量重命名工作,并且支持使用 perl 风格的正则替换命令,功能十分强大。

    研究发现这个脚本使用了 perl File 模块中的 Rename 功能,更详细的信息请自行百度。

    下面是 manual 中的两个示例:

      rename 's/\e.bak$//' *.bak  # 移除当前目录中后缀为 .bak 的文件名的后缀	
     rename 'y/A-Z/a-z/' *      # 将当前目录中所有文件的文件名中的大写字母转化为小写
    
    

    该使用哪一种实现呢

    在上面的几种实现中,我推荐使用 rename 。需要注意这种批量化操作虽然方便,却可能产生致命的后果,因此执行命令前一定要多测试测试!

    展开全文
  • rename除了给单个文件重命名,还可以批量文件重命名。同时,值得注意一点的是,rename命令是带3个参数而不是很多人认为的2个参数。
  • FileRename(批量修改文件)是一款可以批量修改文件属性,名称的强大软件,使用这款FileRename破解版可以高效的进行文件批量修改工程,如果您正需要,马上下载这款FileRename(批量修改文件)使用吧。
  • python对图片或者文本实现批量重命名,文本数据或者图片数据都可以。代码简单易懂。
  • word批量重命名

    2015-09-29 14:01:50
    放在word文件夹下运行 没做界面 运行后自动把当前目录的word 改名成word内容的标题,标题是根据字体大小判断的
  • 本来以为能找个现成的工具,没想到都要钱。 实现通过Excel表格批量重命名文件。可以灵活设置新老文件名对应的Excel表格列。
  • 批量重命名程序

    2017-12-04 16:16:56
    本程序主要是执行文件夹里面批量文件重命名形式,从而实现随机排序。
  • Excel文件批量重命名

    千次阅读 2019-03-28 21:49:40
    目标: 将文件夹下的文件名批量更改为指定格式。 一、批量获取文件名 1. 进入文件夹,将光标放置在空白处,按住 shift 键不放,...names.xls ,获取当前文件夹下所有的文件名,保存到names.xls文件中。 ...

    顺便推荐一款重命名软件ReNamer,下载地址:https://renamer.en.softonic.com/

    目标:

    • 将文件夹下的文件名批量更改为指定格式。

     

    一、批量获取文件名

        1. 进入文件夹,将光标放置在空白处,按住 shift 键不放,同时鼠标右键,在弹出菜的单窗口中点击 在此处打开Powershell窗口

       

        2. 执行命令  cmd /r dir/b>names.xls ,获取当前文件夹下所有的文件名,保存到names.xls文件中。

       

     

    二、EXCEL批量处理

        1. 打开names.xls文件。

       

        2. B列1行中输入重命名的文件名称,这里我想改为 00000.png 00001.png 00002.png的形式。为了保证数字前的0不被隐藏以及方便下拉填充,前面加了个x,然后进行下拉自动填充。

        3. C列1行中输入命令 =SUBSTITUTE(B1,"x","") ,用来去掉x。

        4. D列1行输入命令   ="ren "&""""&A1&""""&" "&""""&C1&""""

        5. 在文件夹中新建文本文档,将整个D列复制进去。保存并关闭,将文件名后缀由txt改为bat。

    三、批量重命名

        双击打开rename.bat文件,文件即刻被批量重命名。

     

     

     

     

     
     
     
     
    展开全文
  • linux批量重命名文件

    千次阅读 2018-07-02 16:26:23
    现实中我们常会给文件批量重命名, 利用linux的重命名命令rename可以做到这一点 可以看到rename的from、to、files三个参数 from:修改的内容,to:改成的内容,files:改的文件,通常用通配符表示 比如有这样一...
  • 文件批量重命名不要括号工具是一个非常强大和灵活的文件重命名工具,它提供了所有标准的重命名程序,包括前缀,后缀,替换,变更情况,以及括号内的内容删除,添加数字序列,改变文件扩展名,等等。对于高级用户有一...
  • Windows对文件批量重命名

    万次阅读 多人点赞 2018-09-03 20:22:59
    批量重命名之前效果: 完成后效果: 首先在需要批量重命名文件的同文件夹下新建txt,内容: @echo off set a=0 setlocal EnableDelayedExpansion dir /b .\*.jpg | find /c /v "" &gt;&gt...
  • python对文件批量重命名

    千次阅读 2018-06-09 13:41:56
    #对所有文件以数字递增的方式重命名 def file_rename(): i = 0 #需要重命名文件绝对路径 path = r&amp;amp;quot;G:\Test_demo\authdemoxlzx\营业执照102个\营业执照102个&amp;amp;quot; #读取该文件夹...
  • VB文件批量重命名

    2013-05-17 12:55:48
    选择某个文件夹,将文件夹下面的文件,根据重命名规则,进行批量重命名。可改造,可升级,实现其它的文件处理功能。
  • Python对文件批量重命名

    万次阅读 多人点赞 2018-08-01 16:15:25
    如何重复性修改文件名,并迭代 作为一个Python学习小白,纯粹为了利用Python去完成一些重复性的工作。 我利用的是Python3去实现重复性修改文件名, 记得配好Python的环境变量,因为要在命令行执行 ...
  • Linux下批量重命名文件

    千次阅读 2019-06-06 16:28:52
    Linux下批量重命名文件通过rename命令批量重命名文件基本语法示例1. 改变文件扩展名2. 大写改成小写3. 更改文件名模式 通过rename命令批量重命名文件 基本语法 rename [-n -v -f] <pcre> <files> '...
  • 文件批量重命名程序,是用VC++编程实现,对于文件可以批量命名,包括各种图像文件,方面快捷,功能强大
  • 文件夹批量重命名

    2018-03-01 18:11:13
    一 自定义命名set a=00setlocal EnableDelayedExpansionFOR /f "tokens=*" %%i IN ('dir /a:d /b') DO (set /A a+=1ren "%%i" "自己命名!a!")二 替换其中某些字段@...
  • 批量重命名文件名,vb.net For i = 0 To filename.Count - 1 filename_split = filename(i).ToString.Split("_") filename_ddate_temp = Microsoft.VisualBasic.Left(filename_split(3), 4) & "-" & Microsoft....
  • max贴图批量重命名

    热门讨论 2014-09-29 18:00:18
    通过工具可以批量对场景中的贴图进行重新命名,适合于3ds不支持贴图命名太长的操作
  • cmd - 批量重命名文件

    万次阅读 2018-05-29 00:18:18
    相信大家或多或少都遇到过类似的情况:从网上下载了好多图片(或者其他的文件),这些图片的名字往往都是些乱七八糟的字母数字的...另一种方法就是通过dos命令来批量修改文件名。 Windows自带的批量重命名 选...
  • 文件少改个文件名还行,文件一多,成百上千那种,...虽然您可以使用许多第三方工具来完成这项工作,但Windows 10提供了一些使用文件资源管理器快速重命名多个文件的方法,甚至可以使用PowerShell和命令提示符使用...
  • 可以将有一定特征的文件批量重命名,比如下载了一批评书,名字为 单田芳-三国演义-www.xxxx.com-第一集.mp3 就可以通过此工具将网址去掉,功能极其简单,使用极其方便。
  • python批量重命名文件方法

    千次阅读 2017-12-09 10:28:34
    问题提出:对某类文件需要批量重命名图片、数据文件名称,简化手动操作,节约有效时间。实现代码:(比如我要改网上下载的机场图片,命名为机场1,机场2…) import os path=input('C:/Users/Administrator/Desktop/...

空空如也

1 2 3 4 5 ... 20
收藏数 34,321
精华内容 13,728
关键字:

dos重命名文件命令 shell