标题: [文本处理] 批处理重命名文件名后,第一个文件名出现重复文本,如何解决? [打印本页]
作者: 布布丁 时间: 2023-6-11 23:37 标题: 批处理重命名文件名后,第一个文件名出现重复文本,如何解决?
本帖最后由 布布丁 于 2023-6-11 23:39 编辑
手头有10个txt文件,每个文件只有2行内容。文件原名称为第一行文本的内容,现在需要重命名为:第二行文本的内容+原名称。举例说明:
文件原名称为:
001.泥坑.txt
003.春节.txt
005.最好的朋友.txt
007.捉迷藏.txt
009.猪妈妈在工作.txt
011.猪爸爸的眼镜不见了.txt
013.打嗝.txt
015.秘密.txt
017.野餐.txt
019.青蛙,虫子和蝴蝶.txt
----------------------------
期望重命名后的文件名称为:
002.双胞胎熊猫_001.泥坑.txt
004.恐龙先生弄丢了_003.春节.txt
006.鹦鹉波莉_005.最好的朋友.txt
008.乔治第一天上幼儿园_007.捉迷藏.txt
010.中间的小猪_009.猪妈妈在工作.txt
012.花园种菜_011.猪爸爸的眼镜不见了.txt
014.自行车_013.打嗝.txt
016.放风筝_015.秘密.txt
018.乐器_017.野餐.txt
020.装扮游戏_019.青蛙,虫子和蝴蝶.txt
-------------------------------------------
按照下面的脚本:- @echo off
- setlocal enabledelayedexpansion
- for %%a in (*.txt) do set "txt=%%a" & call :aa
- pause
- :aa
- for /f "usebackq skip=1 delims=*" %%b in ("!txt!") do (
- set "a=%%a" & set "b=%%b"
- ren "!a!" "!b!_!a!"
- goto :eof
- )
复制代码
执行后,文件名称为:
002.双胞胎熊猫_002.双胞胎熊猫_001.泥坑.txt
004.恐龙先生弄丢了_003.春节.txt
006.鹦鹉波莉_005.最好的朋友.txt
008.乔治第一天上幼儿园_007.捉迷藏.txt
010.中间的小猪_009.猪妈妈在工作.txt
012.花园种菜_011.猪爸爸的眼镜不见了.txt
014.自行车_013.打嗝.txt
016.放风筝_015.秘密.txt
018.乐器_017.野餐.txt
020.装扮游戏_019.青蛙,虫子和蝴蝶.txt
--------------------------------------------------
即第一个文件名中,"002.双胞胎熊猫_002.双胞胎熊猫"出现了重复(实际第一个文件第二行文本内容为:002.双胞胎熊猫)。
请帮忙看看为什么第一个文件名中会出现重复?该如何修正脚本呢?
作者: 77七 时间: 2023-6-11 23:53
说明对001.泥坑.txt 这个文件执行了两次重命名操作
把脚本第三行改为- for /f "delims=" %%a in ('dir /b /a-d *.txt') do set "txt=%%a" & call :aa
复制代码
试试
作者: 布布丁 时间: 2023-6-12 00:05
回复 2# 77七
果然好了,感谢感谢!
作者: qixiaobin0715 时间: 2023-6-12 09:43
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
- for /f "delims=" %%i in ('type "%%a"') do set Prefix=%%i
- ren "%%a" "!Prefix!_%%a"
- )
- pause
复制代码
作者: 布布丁 时间: 2023-6-12 12:24
回复 4# qixiaobin0715
如果Prefix是指定行文本(比如第5行),如何改进呢?
作者: qixiaobin0715 时间: 2023-6-12 12:35
- @echo off
- set LineNo=5
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
- set n=0
- for /f "delims=" %%i in ('type "%%a"') do (
- set /a n+=1
- if !n! equ %LineNo% set Prefix=%%i
- )
- if defined Prefix ren "%%a" "!Prefix!_%%a"
- set Prefix=
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |