win cmd:删除没有边车的文件

win cmd: Deleting files that have no sidecars

cmd 语法有问题,试图删除特定文件夹中没有 sidecar 的具有特定扩展名的文件。例如:如果文件夹包含:

1.A, 1.B, 2.A, 3.A, 4.A, 4.B

bat 应该只删除

2.A, 3.A

..希望这是有道理的。

到目前为止我得到的代码必须非常接近,不幸的是不能工作

@echo off

FOR %%x IN (%1\*.A) DO 
(
    IF not exist "%1\%x.B" del "%1\%x.A"
)

非常感谢任何帮助。

问题的评论是正确的

  • FOR 变量百分比在批处理脚本中使用时必须始终加倍
  • 开括号必须与 DO 在同一行。但是这么简单的脚本就不需要parens了。

此外,您只需要 FOR 变量的基本名称,因此您需要 ~n 修饰符。

我在开始时使用 PUSHD 使代码更加健壮。

@echo off
pushd %1
for %%F in (*.A) do if not exist "%%~nF.B" del "%%F"
popd