找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27727|回复: 8

[文本处理] BAT如何按要求批量重命名文件?

[复制链接]
发表于 2015-10-10 15:28:05 | 显示全部楼层 |阅读模式
目录下有一子文件夹“文章”。里面有很多文件。需要对其批量改名,要求是在文件名最后(后缀名前)添加一个关键字。
比如:

关键词文件为:关键词.txt
关键词1
关键词2
关键词3
…………
关键词n
————————————————————
需改名 原文件名为:
A文章标题.txt
B文章标题.txt
C文章标题.txt
D文章标题.txt
…………
N文章标题.txt

改名后 新文件名为:
A文章标题【关键词1】.txt
B文章标题【关键词5】.txt
C文章标题【关键词3】.txt
…………
N文章标题【关键词n】.txt

————————
需改名 原文件有很多个,随机抽取"关键词.txt"里面的词或者循环使用,对文件进行改名,。希望大侠帮帮忙,谢谢了。
发表于 2015-10-10 16:56:28 | 显示全部楼层
本帖最后由 flyinnet9 于 2015-10-10 17:05 编辑

假设目录结构是这样的

一级目录
|
|___<文章>
|___bat
|___关键字.txt
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::设置关键字数量
  4. set num=50

  5. for %%a in (文章\*.txt) do (
  6.   set /a mod=!random!%%!num!
  7.   for /f %%b in ('more +!mod! 关键字.txt') do if not defined str set str=%%b
  8.   ren "%%a" "%%~na_!str!.txt"
  9.   set str=
  10. )
复制代码
 楼主| 发表于 2015-10-10 17:30:32 | 显示全部楼层
回复 2# flyinnet9

效果不错。
不知道这个:关键词数量
set num=6
能不能自动获取呢!有多少词就是多少。不用指定……
——————
非常感谢 有时间!再研究研究吧!
发表于 2015-10-10 20:53:53 | 显示全部楼层
回复 3# ruoru376
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::获取关键字数量
  4. for /f %%a in ('type 关键字.txt^|find /c /v ""') do (
  5.     set "num=%%a"
  6. )

  7. for %%a in (文章\*.txt) do (
  8.   set /a mod=!random!%%!num!
  9.   for /f %%b in ('more +!mod! 关键字.txt') do if not defined str set str=%%b
  10.   ren "%%a" "%%~na_!str!.txt"
  11.   set str=
  12. )
复制代码
 楼主| 发表于 2015-10-10 22:31:03 | 显示全部楼层
回复 4# DAIC


    谢谢!bat 效率还真慢啊!
发表于 2015-10-11 21:44:04 | 显示全部楼层
回复 5# ruoru376


总共多少个文件需要处理?
现在的代码需要多长时间处理完?
你希望多长时间处理完?
 楼主| 发表于 2015-10-20 17:22:53 | 显示全部楼层
回复  ruoru376


总共多少个文件需要处理?
现在的代码需要多长时间处理完?
你希望多长时间处理完? ...
DAIC 发表于 2015-10-11 21:44


不好意思,这些天有些忙!没有来到论坛!
非常感谢!
2万个文件 耗费了 十多分钟啊!效率很低吧! 最好是1-3分钟就能处理完成就好了
发表于 2015-10-21 14:29:35 | 显示全部楼层
回复 7# ruoru376


试试这样需要几分钟
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set fileNum=0
  4. set keyNum=0

  5. REM 获取关键词数量
  6. for /f "delims=" %%i in ('type "关键词.txt"') do (
  7.     set /a keyNum+=1
  8.     set "_!keyNum!=%%i"
  9. )

  10. REM 重命名
  11. for %%i in (文章\*.txt) do (
  12.     set /a fileNum+=1
  13.     set /a mod=!fileNum!%%!keyNum!
  14.     if !mod! equ 0 (
  15.         set mod=3
  16.     )
  17.     for /f %%j in ("_!mod!") do (
  18.         ren "%%i" "%%~ni【!%%j!】%%~xi"
  19.     )
  20. )
复制代码
 楼主| 发表于 2015-10-21 16:28:00 | 显示全部楼层
回复 8# DAIC
这个真的不错,效率是原来的4倍左右,谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 14:15 , Processed in 0.011666 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表