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

[文件操作] [已经解决]求助:BAT批量为文件添加编号

[复制链接]
发表于 2015-9-17 09:08:32 | 显示全部楼层 |阅读模式
本帖最后由 shimuren 于 2015-9-17 21:11 编辑

求助:批量为当前文件夹里面的txt文件名后添加一个编号,编号格式为B+当前年份后两位+月份+日期+随机三位数,如果判断已经有编号则不添加
比如  批处理,B150907001.txt

谢谢!
发表于 2015-9-17 10:50:36 | 显示全部楼层
本帖最后由 回家路上 于 2015-9-17 12:40 编辑

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3.         set /a n+=1& set m=00!n!
  4.         ren "%%i" "%%~ni,B!date:~2,2!!date:~5,2!!date:~8,2!!m:~-3!%%~xi"
  5. )
  6. pause & exit /b
复制代码
 楼主| 发表于 2015-9-17 11:32:37 | 显示全部楼层
回复 2# 回家路上



    运行不了 提示找不到文件 处理的是文件夹下TXT文件
发表于 2015-9-17 12:45:16 | 显示全部楼层
回复 3# shimuren


和txt放一起执行。
目测你发的几个帖子都是有联系的,说一下你整体需求。1、2、3、4。。。。
 楼主| 发表于 2015-9-17 17:17:29 | 显示全部楼层
回复 4# 回家路上


    嗯谢谢 大哥

文件夹下面有多个txt文件,我想用bat实现其文件编号和统计行数,同时也能删除这些统计。
比如:有a.txt b.txt c.txt
编号号的文件名:a,B150917002.txt       b,B150917003.txt          c,B150917002.txt    (编号取当前年份后两位+月份+日期+随机编号)
统计行数后的文件名: a,B20150917002,N456854.txt     b,B20150917002,N546464.txt   c,B20150917002,N558444.txt
删除编号行号:根据名称里面不同字母开头的数字删除,比如a,B150917554.txt删除编号,就只删除,B150917554这段。

要是可以整合在一个bat文件,或者只处理拖拽到图标上的文件就更好了 谢谢
发表于 2015-9-17 19:14:27 | 显示全部楼层
理解了前两步
拖拽N个txt文件到bat上,bat就将“B150917002”和“N456854”类似格式的字符解析获取追加到文件名后面。

然而,并不明白删除编号行号:根据名称里面不同字母开头的数字删除,比如a,B150917554.txt删除编号,就只删除,B150917554这段。是干什么的。
跟上面的明显不应该是同一步的呀,不能加上的同时就删除吧。。。
而且,如果最后三位是随机生成的,只留下“B150917554”这样格式的会重名的。请整理核实
 楼主| 发表于 2015-9-17 19:41:13 | 显示全部楼层
回复 6# 回家路上


【删除问题】嗯删除是不在一步我表达错误
应该是:添加前判断一下,要是没有编号则添加,有则先删除后再添加,行号也是一样

【重名问题】
文件名还有有其他参数不会重名,要是是这样的格式  年份前两位+月份+日期+秒数+随机二位数  应该不会重名吧?

谢谢
发表于 2015-9-17 20:04:05 | 显示全部楼层
来点实际的,
a
b
c
d
的到时候你肯定还得改。
txt到底是有啥样的,每都列举些。
该上截图就上截图呗
就算是秒也会重复
 楼主| 发表于 2015-9-17 20:16:30 | 显示全部楼层
回复 8# 回家路上


这样的
发表于 2015-9-17 20:41:28 | 显示全部楼层
回复 9# shimuren


拖拽N个txt到bat上

  1. @echo off & setlocal enabledelayedexpansion
  2. :deal
  3. for /f "delims=" %%a in ("%~1") do (
  4.         set fn=%%~na
  5.         set ext=%%~xa
  6.         for /f "tokens=1-3* delims=," %%i in ("!fn!") do (
  7.                 set /a n=%random%%%1000& set m=000!n!
  8.                 set bnum=B!date:~2,2!!date:~5,2!!date:~8,2!!m:~-4!
  9.                 for /f "tokens=3 delims=:" %%x in ('find /c /v "" "%~1"') do set nnum=%%x
  10.                 ren "%~1" "%%i,%%j,%%k,!bnum!,N!nnum:~1!!ext!"
  11.         )
  12. )
  13. shift
  14. if "%~1" neq "" goto deal
  15. pause & exit /b
复制代码
 楼主| 发表于 2015-9-17 21:00:04 | 显示全部楼层
回复 10# 回家路上

谢谢
发表于 2015-9-17 21:12:25 | 显示全部楼层
请按照标准的文件名格式(你上面最后晒的比较整齐的图)进行实验
不要abcd了。没意义,针对abcd写的脚本也没必要。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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