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

[文件操作] [已解决]批处理排序重命名文件

本帖最后由 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能实现吗?  应该怎么写呢?

  1. dir /b *.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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  能实现吗

TOP

回复 3# g99
我实在看不出来它是一个序列,能用公式算出来吗?

如果是无序的,为什么不直接写一百行:
  1. set strPath=D:\一个文件夹
  2. pushd  "%strPath%"
  3. rename 1.txt   1.txt
  4. rename 2.tx    11.txt
  5. rename 3.txt   12.txt
  6. rename 4.txt   13.txt
  7. rem ……
  8. rem ……
  9. rename 9.txt   19.txt
  10. rename 10.txt  2.txt
  11. rename 11.txt  21.txt
  12. popd
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b /on^|findstr /ibe [1-9][0-9]*\.txt') do (
  3.         set /a n+=1
  4.         ren "!n!.txt" "_%%a"
  5. )
  6. for /f "delims=_" %%a in ('dir /b^|findstr /ibe _[1-9][0-9]*\.txt') do (
  7.         ren "_%%a" "%%a"
  8. )
  9. pause
复制代码

TOP

回复 4# yu2n
先谢谢你!
这个排序 应该是属于字符排序

TOP

回复 5# apang
成功解决了问题  谢谢你  通过你写的BAT  让我又学到了新知识

TOP

回复 5# apang

代码能稍微解释一下么?想学习学习。
学习...

TOP

回复 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文件
1

评分人数

TOP

回复 9# apang

原来如此,学到了,感谢!
学习...

TOP

回复 9# apang


    个人更倾向使用临时后缀名,然后一个ren收尾…感觉暴力点会更快
1

评分人数

TOP

回复 11# CrLf


    “_”放在文件名前面确实不严谨,如果名为_1.txt的文件原本就存在,重命名时仍然会失败
放到文件名后面是个好办法,形如1.txt_,2.txt_,重命名时可以用通配符了,我怎么没想到?

TOP

返回列表