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
@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
我试了一下似乎发生数字重复, 会不会是有些文件存在部分相同原因呢
谢谢
QQ截图20191122094935.png
(25.87 KB, 下载次数: 91)
下载附件
2019-11-22 09:52 上传
作者:
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引入了太多的时间消耗,为什么不把逻辑反过来呢?
f:\test\test>dir/b *.txt
b.txt
丰田_105.txt
丰田冠_80.txt
奔驰_21.txt
宝马_45.txt
玛莎拉蒂_24.txt
f:\test\test>type b.txt
玛莎拉蒂_24
宝马_45
奔驰_21
丰田冠_80
丰田_105
f:\test\test>type test.bat
@echo off&setlocal enabledelayedexpansion
set/a n=0
for /f "delims=" %%a in (b.txt) do (
set/a n+=1
ren "%%a.txt" "!n!-%%a.txt"
)
f:\test\test>test.bat
f:\test\test>dir/b *.txt
1-玛莎拉蒂_24.txt
2-宝马_45.txt
3-奔驰_21.txt
4-丰田冠_80.txt
5-丰田_105.txt
b.txt
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2