-1

我有大约 60% 的歌曲集的歌词。歌词的文件名与歌曲的文件名相同,文件名zzz_前面.lrc加上扩展名。

C:\Songs\album\song.mp3
C:\Songs\album\zzz_song.lrc

我目前像这样打印文件名

for /r "C:\Songs" %%f in (*.mp3 *.flac) do (    
    echo %%f
)

如何if在 for 循环中的语句中创建一个布尔值来检查歌词文件是否存在?

我在想类似的东西

if exist zzz_%f echo zzz_%f.lrc

zzz_%f添加zzz_到完整文件路径(例如zzz_C:\Songs\album\song.mp3.lrc并附加到现有扩展名

4

2 回答 2

-1

for允许将多个修饰符与其变量一起使用,根据您的示例,%%~nf只会给您基本名称(无路径,无扩展名)。要查看更多信息,请从命令行运行help for,它们在那里得到了很好的解释。

于 2012-12-16T11:41:25.380 回答
-1

使用%%~nxf修饰符获取带扩展名的文件名,使用 %%~pf 获取当前文件路径。

@echo off
@set prefix=zzz_
for /r "C:\Songs" %%f in (*.mp3 *.flac) do (
  IF EXIST "%%~pf%prefix%%%~nxf" echo "%%~pf%prefix%%%~nxf"
)

命令变量:

%%~nxf   file name and extension;
%%~nf    file name;
%%~xf    file extension;
%%~pf    file path;
于 2012-12-16T11:00:58.813 回答