批量重命名来自不同变量的文件
Batch renaming files from different variables
我有偶数行的文本文件 (2.txt)。奇数行是我需要重命名的文件的当前名称(奇数行包含文件扩展名)。偶数行是相应文件的新名称(偶数行不包含文件扩展名)。
例如此类文件的数量:
001.mp3
第一首歌。
002.mp3
我也是一首歌!
003.mp3
他就是给我改名的人...
(文件结束)
我想遍历文件,将行读入变量,检查它是否包含扩展名 (mp3)。如果是(奇数行),则将其保存到 "name" 变量。如果不是(偶数行),则将其保存到 "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
这是一些棘手的代码。希望你能理解。
我用这个作为我的 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。
这样试试:
@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
我有偶数行的文本文件 (2.txt)。奇数行是我需要重命名的文件的当前名称(奇数行包含文件扩展名)。偶数行是相应文件的新名称(偶数行不包含文件扩展名)。
例如此类文件的数量:
001.mp3
第一首歌。
002.mp3
我也是一首歌!
003.mp3
他就是给我改名的人...
(文件结束)
我想遍历文件,将行读入变量,检查它是否包含扩展名 (mp3)。如果是(奇数行),则将其保存到 "name" 变量。如果不是(偶数行),则将其保存到 "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
这是一些棘手的代码。希望你能理解。
我用这个作为我的 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。
这样试试:
@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