标题: [文件操作] [已解决]批处理排序重命名文件 [打印本页]
作者: g99 时间: 2014-9-8 07:34 标题: [已解决]批处理排序重命名文件
本帖最后由 g99 于 2014-9-8 17:16 编辑
一个文件夹内有100个txt文件,1.txt 2.txt 3.txt …… 98.txt 99.txt 100.txt 现在想把他们排序 排成1.txt 11.txt 12.txt …… 按字符排序 这个BAT能实现吗? 应该怎么写呢?
作者: Batcher 时间: 2014-9-8 10:59
复制代码
作者: g99 时间: 2014-9-8 12:23
回复 2# Batcher
如果想把文件重命名
1.txt改成 1.txt
2.txt改成 11.txt
3.txt改成 12.txt
4.txt改成 13.txt
……
……
9.txt改成 19.txt
10.txt改成 2.txt
11.txt改成 21.txt
……
……
用for 循环加dir 能实现吗
作者: yu2n 时间: 2014-9-8 13:28
回复 3# g99
我实在看不出来它是一个序列,能用公式算出来吗?
如果是无序的,为什么不直接写一百行:- set strPath=D:\一个文件夹
- pushd "%strPath%"
- rename 1.txt 1.txt
- rename 2.tx 11.txt
- rename 3.txt 12.txt
- rename 4.txt 13.txt
- rem ……
- rem ……
- rename 9.txt 19.txt
- rename 10.txt 2.txt
- rename 11.txt 21.txt
- popd
复制代码
作者: apang 时间: 2014-9-8 14:35
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /on^|findstr /ibe [1-9][0-9]*\.txt') do (
- set /a n+=1
- ren "!n!.txt" "_%%a"
- )
-
- for /f "delims=_" %%a in ('dir /b^|findstr /ibe _[1-9][0-9]*\.txt') do (
- ren "_%%a" "%%a"
- )
- pause
复制代码
作者: g99 时间: 2014-9-8 15:44
回复 4# yu2n
先谢谢你!
这个排序 应该是属于字符排序
作者: g99 时间: 2014-9-8 17:15
回复 5# apang
成功解决了问题 谢谢你 通过你写的BAT 让我又学到了新知识
作者: xudaweb 时间: 2014-9-9 11:06
回复 5# apang
代码能稍微解释一下么?想学习学习。
作者: apang 时间: 2014-9-9 15:54
回复 8# xudaweb
假设有20个txt文本,dir /b /on *.txt的结果为:
1.txt、10.txt、11.txt、12.txt、13.txt、14.txt、15.txt、16.txt、17.txt、18.txt、19.txt、2.txt、20.txt、3.txt、4.txt、5.txt、6.txt、7.txt、8.txt、9.txt
第一个for循环是将1.txt重命名为_1.txt,2.txt重命名为_10.txt,3.txt重命名为_11.txt,... 20.txt重命名为_9.txt
第二个for循环是将前面得到的 _1.txt、_2.txt、_3.txt、_4.txt、... _20.txt 中的“_”字符去掉
如果第一个for循环重命名时不加“_”字符的话,会因为目标文件已存在而导致重命名失败。所以用“_”字符过渡,重命名了两次
findstr /ibe [1-9][0-9]*\.txt是筛选文件名为数字(大于等于1的整数)的所有txt文件
作者: xudaweb 时间: 2014-9-11 16:12
回复 9# apang
原来如此,学到了,感谢!
作者: CrLf 时间: 2014-9-11 19:18
回复 9# apang
个人更倾向使用临时后缀名,然后一个ren收尾…感觉暴力点会更快
作者: apang 时间: 2014-9-11 21:13
回复 11# CrLf
“_”放在文件名前面确实不严谨,如果名为_1.txt的文件原本就存在,重命名时仍然会失败
放到文件名后面是个好办法,形如1.txt_,2.txt_,重命名时可以用通配符了,我怎么没想到?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |