我有文本文件(2.txt),行数均匀。奇数行是我需要重命名的文件的当前名称(奇数行包含文件扩展名)。偶数行是相应文件的新名称(偶数行不包含文件扩展名)。
E.g。这样的文件:
001.mp3
第一首歌。
002.mp3
我也是一首歌!
003.mp3
他是那个会重命名我的人......
(文件结束)
我想循环遍历文件,将行读入变量,检查它是否包含扩展名(mp3)。如果是(奇数行),则将其保存为“名称”变量。如果不是(偶数行),则将其保存到“line”变量,并将点和扩展名添加到末尾(例如,First song..mp3)并将“name”文件重命名为“line”文件。因此“001.mp3”将被重命名为“First song..mp3”。
我尝试将来自不同来源的代码的不同部分组合在一起,但出了点问题。
FOR /F "tokens=*" %%i IN (2.txt) DO (
set var=%%i
if not x%var:mp3=%==x%var% set name=%%i
if x%var:mp3=%==x%var% (
set line=%%i.mp3
ren name line
)
)
pause
答案 0 :(得分:0)
这是一些棘手的代码。希望你能理解它。
我用它作为我的2.txt文件
001.mp3
First song
002.mp3
I am a song
003.mp3
last song
004.mp3
my final! song
这是我的代码。
@echo off
setlocal enableExtensions enableDelayedExpansion
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" "2.txt"') do set "lines=%%~a"
set /a "lines=lines / 2"
< 2.txt (
for /L %%l in (1, 1, %lines%) do (
set "line1="
set "line2="
set /P "line1="
set /P "line2="
echo rename "!line1!" "!line2!.mp3"
)
)
endlocal
Pause
我的输出
rename "001.mp3" "First song.mp3"
rename "002.mp3" "I am a song.mp3"
rename "003.mp3" "last song.mp3"
rename "004.mp3" "my final! song.mp3"
Press any key to continue . . .
如果您觉得屏幕上的输出看起来不错,请在重命名命令之前删除ECHO。
答案 1 :(得分:0)
试试这样:
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (2.txt) do (
set "$Line=%%a"
If /i [!$Line:~-4!]==[.mp3] (
set "$FileMp3=%%a"
) else (
echo ren "!$FileMp3!" "%%a.mp3"
)
)
)
如果输出正确,请删除echo