-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

修飾子を使用%%~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 に答える
-1

forあなたの例のように、いくつかの修飾子をその変数で使用することができ%%~nfます。ベース名だけが得られます(パスなし、拡張子なし)。詳細についてはhelp for、コマンドラインから実行してください。ここで詳しく説明されています。

于 2012-12-16T11:41:25.380 に答える