Chinaunix

标题: 改文件名 [打印本页]

作者: aaaa_123    时间: 2019-11-22 08:02
标题: 改文件名
本帖最后由 aaaa_123 于 2019-11-22 10:28 编辑

大家好最近遇到问题有点多, 麻烦大家了

文件夹下有2000多个大大小小不同名称的文本,需要在文件名最前面加入数字和横杠,但是得按b内文件名先后次序加入数字

ls *.txt
玛莎拉蒂_24.txt
宝马_45.txt
奔驰_21.txt
丰田_105.txt
丰田冠_80.txt


b.txt已编缉好次序
cat b.txt
玛莎拉蒂_24
宝马_45
奔驰_21
丰田冠_80
丰田_105


加入数字和横杠更改后文件名称     数字大小是根据b.txt先后次序
1-玛莎拉蒂_24.txt
2-宝马_45.txt
3-奔驰_21.txt
4-丰田冠_80.txt
5-丰田_105.txt

非常感谢
因为平常使用Win环境的多
批处理可能会更适合使用环境,如果不shell也行的







作者: aaaa_123    时间: 2019-11-22 08:53
           
作者: cfwyy    时间: 2019-11-22 09:00
本帖最后由 cfwyy 于 2019-11-22 12:14 编辑

bat
  1. @echo off
  2. for /f "tokens=*" %%i in ('dir /b *.txt') do (
  3.         for /f "delims=:" %%j in ('findstr /n /r "^%%~ni$" b.txt') do (
  4.                 rename "%%i" "%%j-%%i"
  5.         )
  6. )
  7. pause
复制代码

几千个没试过,建议先做好备份。
作者: aaaa_123    时间: 2019-11-22 09:40
回复 3# cfwyy

试了一下, 基本可以, 似乎次序有点不太准确   会不会是不支持文件名某些字符格式呢   例如 这样文件名
cat b.txt
玛莎拉蒂_24
宝马_45
奔驰_21
丰田_104



作者: aaaa_123    时间: 2019-11-22 09:53
回复 3# cfwyy

我试了一下似乎发生数字重复,  会不会是有些文件存在部分相同原因呢
谢谢




作者: aaaa_123    时间: 2019-11-22 09:57
应该是存在部分文件名相同原因,   b文件名需要全部正确匹配上
作者: aaaa_123    时间: 2019-11-22 10:12
再测了一下 发现是代码数字算法重复使用, 存在插入算法相同数字情况

作者: aaaa_123    时间: 2019-11-22 10:19
大哥再帮忙改一下
作者: cfwyy    时间: 2019-11-22 12:16
回复 8# aaaa_123

已更新。
作者: aaaa_123    时间: 2019-11-22 13:25
回复 9# cfwyy

谢谢      这次帅了
作者: aaaa_123    时间: 2019-11-22 15:10
本帖最后由 aaaa_123 于 2019-11-22 17:03 编辑


ok...         
作者: Looiml    时间: 2020-02-27 22:23
不得不说,2楼的代码效率偏低,主要是因为findstr引入了太多的时间消耗,为什么不把逻辑反过来呢?
  1. f:\test\test>dir/b *.txt
  2. b.txt
  3. 丰田_105.txt
  4. 丰田冠_80.txt
  5. 奔驰_21.txt
  6. 宝马_45.txt
  7. 玛莎拉蒂_24.txt

  8. f:\test\test>type b.txt
  9. 玛莎拉蒂_24
  10. 宝马_45
  11. 奔驰_21
  12. 丰田冠_80
  13. 丰田_105
  14. f:\test\test>type test.bat
  15. @echo off&setlocal enabledelayedexpansion
  16. set/a n=0
  17. for /f "delims=" %%a in (b.txt) do (
  18.         set/a n+=1
  19.         ren "%%a.txt" "!n!-%%a.txt"
  20. )
  21. f:\test\test>test.bat

  22. f:\test\test>dir/b *.txt
  23. 1-玛莎拉蒂_24.txt
  24. 2-宝马_45.txt
  25. 3-奔驰_21.txt
  26. 4-丰田冠_80.txt
  27. 5-丰田_105.txt
  28. b.txt
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2