win cmd: удаление файлов без колясок

Имея проблемы с синтаксисом cmd, пытается удалить файлы с определенным расширением в определенной папке, которые не имеют коляски. например.: если папка содержит:

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

bat следует только удалить

2.A, 3.Есть

..надеюсь, это имеет смысл.

Код, который я получил до сих пор, должен быть очень близок, к сожалению, не работает

@echo off

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

Любая помощь в основном ценится.

1 ответ

  1. Комментарии к вопросу правильные

    • Для переменных проценты должны быть последовательно удвоены при использовании в пакетном скрипте
    • Open paren должен быть на той же линии, что и DO. Но нет никакой необходимости в родителях с таким простым сценарием.

    Кроме того, вам нужно только базовое имя переменной FOR, поэтому вам нужен ~nмодификатор.

    Я сделал код немного более надежным, используя PUSHD в начале.

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