使用IF批量处理FOR

时间:2013-09-05 22:43:28

标签: recursion batch-file

我需要一个脚本来检查CDG文件的名称,如果在同一文件夹中不存在.mp3中具有相同名称的另一个文件,则删除cdg文件。

我想用这个简单的代码实现它:

@echo off
for /R %1 %%f in (*.cdg) do (
   if exist %%~nf.mp3 (
      del %%f
     )
)

但它在IF构造中返回了语法错误

我试图谷歌它,但似乎没有人有同样的问题(或者我在使用谷歌时非常糟糕)

有人可以告诉我我哪里错了吗?

3 个答案:

答案 0 :(得分:0)

可能是由于包含空格的文件的名称。如果是,那么:

@echo off
for /R %1 %%f in (*.cdg) do (
if exist "%%~nf.mp3" (
   del %%f
   )
)

NB:引号

此外,您应该查看forfiles(因为您只需要一行代码),但只有在使用Windows 7时才能使用。

莫纳

答案 1 :(得分:0)

给它一个旋转:

@echo off
for /R "%~1" %%f in (*.cdg) do (
   if exist "%%~dpnf.mp3" (
      del "%%f"
     )
)

答案 2 :(得分:0)

好吧,如果您使用的是Windows 7,那么使用forfiles可以轻松实现此目的:

forfiles /m "*.cfg" /c "cmd /c if exist @fname.mp3 del @path"

单独应该可以正常工作,并且它足够短,可以直接在cmd中输入。

莫纳