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

{:1_1:}         

cfwyy 发表于 2019-11-22 09:00

本帖最后由 cfwyy 于 2019-11-22 12:14 编辑

bat
@echo off
for /f "tokens=*" %%i in ('dir /b *.txt') do (
      for /f "delims=:" %%j in ('findstr /n /r "^%%~ni$" b.txt') do (
                rename "%%i" "%%j-%%i"
      )
)
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

大哥再帮忙改一下:handshake

cfwyy 发表于 2019-11-22 12:16

回复 8# aaaa_123

已更新。

aaaa_123 发表于 2019-11-22 13:25

回复 9# cfwyy

谢谢:handshake      这次帅了
页: [1] 2
查看完整版本: 改文件名