bat修改文本内容_如何批量修改文件名,3s时间够不够

?点击关注Excel表哥公众号

上一篇推文我们介绍了如何批量获取同一文件夹下所有的文件名。

7a61be0dcd4c230a9afc08121e5de3fa.png

▲点此图片回顾

很多读者获取到这些文件名之后的一种工作情形就是需要批量或者有针对性地修改这些文件的名称。

那么但凡是这类需要批量操作的重复工作,Excel擅长。

还是以上篇推文中PIC文件夹中的几十张图片为例,我们一起来操作:

01修改文件名称 在示例文件中E列填入需要修改的文件名,为了省去大家填写时还需填写文件类型扩展名的麻烦,我把这步骤也用公式统一实现。

95b2afac8182225e83bfd1a5ae6df372.png

上图中F3单元格的公式为:
="REN"&CHAR(32)&""""&B3&""""&CHAR(32)&""""&E3&MID(B3,FIND(".",B3),99)&""""

当然,感觉公式太长也可以简写为:

="REN "&B3&" "&E3

不过这样就需要注意E列中的Rename名称要和B列中的扩展名一致。

将F列中公式生成的字符串Copy至一个该路径下新建的一个txt文档,保存后将txt后缀修改为.bat。例如下图示例:

767f299063d9d3f8642a2b2cbad91393.png

02见证神奇的时刻 双击这个bat文件,不要眨眼,注意看接下来发生了什么:

c131a513ab832b091e6e9c8561af8248.gif

只需要双击rename.bat这个文件,该文件夹路径下列表中所有的文件名就瞬间自动完成修改了。

我大致数了下3s时间足够了。

03 实现原理介绍 我们还是需要简单了解下实现的原理。 别看上面的一行公式挺长,其实规则很简单,从Excel文件Copy至.bat文件中的命令实际上是Windows操作系统中的 批处理脚本,英文名称 叫Batch,扩展名.bat就是取了前3个字母。

REN就是Rename的缩写。它的语法规则及含义如下:

▼左右滑动查看完整代码

ren_[Drive:][path]_"Oldfilename"_"Newfilename"
[Drive:][path]是文件所在的路径,如缺省了就默认作用于它所在的当前文件夹。 只是呢需要注意这里面有一些空格(红色标注显示),在实际运用时候经常有的读者忘记打空格,因此我才在公式中强制增加了空格,用F9试着预算一下就清楚了。
CHAR(32)   ->  " "
另外,这段公式还有一个设置目的是实现自动在新旧文件名前后增加双引号,因为正如上面的批处理语法说明,文件名需要用双引号括起来,否则一旦文件名中出现空格就无法识别分隔了。 我也查询了一些类似的公众号文章介绍,大多数都漏掉了这一步操作,大家需要格外注意。 另外一个技巧分享: 在Excel中我们知道要在公式中连接文本,一般的作法就是将文本用英文的""括起来再和公式通过&符号连接即可。 但是如果文本中本身就是要有""的话则需要通过下面的方式进行设置:
""""  -> 四个"会通过公式转化为一个"。

那么细心的朋友可能还会产生这样的疑问,既然Windows自带的批处理命名这么强大,是不是也有同样的办法实现批量获取某个路径下所有的文件名称列表清单呢?

是的,用BAT批处理命名也能实现,步骤如下:

  • 在需要提取的文件夹下新建一个txt文档,名称随意,例如DIR.txt。

  • 在txt文件中输入如下命令:

      DIR _ *.* _ /B> _ list.txt

▲注意空格不可缺少

  • 修改文件后缀并双击DIR.bat

  • 自动生成包含文件名列表的list.txt文件

这个小技巧是不是很nice呀,暂时用不到也没关系,大家可以先收藏起来,需要的时候就可以派上用场啦~ 建议读者朋友们将上次推送的文章连在一起阅读
[01] 如何批量获取同一文件夹下所有的文件名 注:本公众号所载原创文章均为作者辛苦创作,转载请联系作者并标明出处。 dc40e7fdeff5d92d0e6cba046c54a44a.png 592d69f5620439d641b785040f9e229f.png扫码关注我们微信公众号:Excel表哥用Excel加速我们的工作和生活 9048d45d9227f6975a9819b6eb417a74.png

处处留心皆学问,建议大家可以将这篇推文收藏,以备不时之需。

你点的每个“在看”我都认真当成了喜欢▼  e80e0213271587d0408cbdb5a677b779.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,可以使用批处理脚本(bat)来批量修改文件或文件夹的名称,也可以修改文件内容。以下是修改文件或文件夹名称的示例脚本: ``` @echo off setlocal enabledelayedexpansion set "source_folder=C:\path\to\source\folder" set "target_folder=C:\path\to\target\folder" for /d %%i in ("%source_folder%\*") do ( set "folder_name=%%~nxi" set "new_name=!folder_name:old_text=new_text!" ren "%%i" "!new_name!" ) for %%i in ("%source_folder%\*") do ( set "file_name=%%~ni" set "new_name=!file_name:old_text=new_text!%%~xi" ren "%%i" "!new_name!" ) ``` 在上面的脚本中,`source_folder`和`target_folder`是需要修改的文件夹的路径和目标文件夹的路径。`old_text`和`new_text`是需要替换的文本和替换后的文本。在循环中,使用`set`命令和`enabledelayedexpansion`选项来修改文件或文件夹的名称。 如果您需要修改文件内容,可以使用以下命令: ``` @echo off setlocal enabledelayedexpansion set "source_folder=C:\path\to\source\folder" set "target_folder=C:\path\to\target\folder" for %%i in ("%source_folder%\*") do ( set "file_name=%%~ni" set "new_name=!file_name:old_text=new_text!%%~xi" copy "%%i" "%target_folder%\!new_name!" > nul ( for /f "usebackq delims=" %%j in ("%%i") do ( set "line=%%j" set "new_line=!line:old_text=new_text!" echo !new_line!>>"%target_folder%\!new_name!" ) ) del "%%i" ) ``` 在上面的脚本中,使用`copy`命令将原始文件复制到目标文件夹中,并使用`for /f`循环读取每个文件的每一行。在循环中,使用`set`命令和`enabledelayedexpansion`选项来修改每一行的文本,并使用`echo`命令将修改后的行写入目标文件中。最后,使用`del`命令删除原始文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值