[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 shimuren 于 2015-9-17 21:11 编辑

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

谢谢!

本帖最后由 回家路上 于 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
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 2# 回家路上



    运行不了 提示找不到文件 处理的是文件夹下TXT文件

TOP

回复 3# shimuren


和txt放一起执行。
目测你发的几个帖子都是有联系的,说一下你整体需求。1、2、3、4。。。。
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 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文件,或者只处理拖拽到图标上的文件就更好了 谢谢

TOP

理解了前两步
拖拽N个txt文件到bat上,bat就将“B150917002”和“N456854”类似格式的字符解析获取追加到文件名后面。

然而,并不明白删除编号行号:根据名称里面不同字母开头的数字删除,比如a,B150917554.txt删除编号,就只删除,B150917554这段。是干什么的。
跟上面的明显不应该是同一步的呀,不能加上的同时就删除吧。。。
而且,如果最后三位是随机生成的,只留下“B150917554”这样格式的会重名的。请整理核实
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 6# 回家路上


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

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

谢谢

TOP

来点实际的,
a
b
c
d
的到时候你肯定还得改。
txt到底是有啥样的,每都列举些。
该上截图就上截图呗
就算是秒也会重复
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 8# 回家路上


这样的

TOP

回复 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
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 10# 回家路上

谢谢

TOP

请按照标准的文件名格式(你上面最后晒的比较整齐的图)进行实验
不要abcd了。没意义,针对abcd写的脚本也没必要。
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

返回列表