标题: [文件操作] 【已解决】求一个循环改名批处理 [打印本页]
作者: 332971606 时间: 2015-8-4 23:14 标题: 【已解决】求一个循环改名批处理
javascript:;
cs13010201pm-1[1].tsd
如图的文件名, 前面的14个字符 “csd13010201pm” 会随着文件夹的不同而改变,但是每个文件夹里的一样
后面的‘1’ 会递增到3位数,“[1].ts”保持不变
想批处理改名完毕后更改成
cs13010201pm-001[1].tsd
cs13010201pm-012[1].tsd
cs13010201pm-134[1].tsd
会递增加的数是1位时,前面加2个0, 到2位数时加1个0,
加完毕后 运行 copy /b *.ts 1.ts.
如果1.ts文件的名字能在运行的时候在窗口输入字符串后在执行就最牛了.
感觉自己打完上面的需求就崩溃了,有大神能帮忙吗,先给大爷跪谢一个
作者: 回家路上 时间: 2015-8-5 00:21
回复 1# 332971606
输入自己的路径,echo输出的就是合格的新名字(改为改名即可)^_^:- @echo off & setlocal enabledelayedexpansion
- set "p=D:\tmp"
- for /f "tokens=1,2,*delims=-[" %%i in ('dir /b %p%') do (
- set a=000%%j
- echo;%%i-!a:~-3![%%k
- )
- pause & exit /b
复制代码
确实,这样改名就行,我还在你上一个帖子想着字母替换呢
不过这样会快不?好了反馈一下哈
作者: 332971606 时间: 2015-8-5 09:19
回复 2# 回家路上
找不到指定的文件名,我把代码里的tmp替换成我D盘后面的路径也是没有效果,
可以直接把bat拖到那个目录直接运行吗,
我按照现在的图里面的原版格式用 copy /b *.ts 1.ts 200个文件也就3到4秒,
唯一我问题是,默认是字母排序, 1的后面会接 100,101,102然后才是2,201,202
就是这个地方烦,
所以想把那个数组前面补0到3位,这样按首字母应该就不会有错误,想法是这样,写不出来
作者: flyinnet9 时间: 2015-8-5 10:36
理解能力比较差,表示不知道楼主的意思
作者: 回家路上 时间: 2015-8-5 13:11
回复 3# 332971606
好吧,我以为看到那个你就会了。- @echo off & setlocal enabledelayedexpansion
- for /f "tokens=1,2,*delims=-[" %%i in ('dir /b *.tsd') do (
- set a=000%%j
- ren "%%i-%%j[%%k" "%%i-!a:~-3![%%k"
- )
- pause & exit /b
复制代码
批处理放目录下,执行
作者: 332971606 时间: 2015-8-5 14:09
回复 5# 回家路上
谢谢大神,膜拜中,请收下我的膝盖
全部改名完毕,真谢谢,
for循环里的东西现在还看不明白,和代码里的for差的有点多,整的有点迷糊,
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |