2016-12-27 8 views
0

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

1., 1, 2., 3.О, 4.О, 4

летучие должен удалить только

2.A, 3.A

... Надеюсь, что имеет смысл.

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

@echo off 

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

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

+3

Вы используете '%% x' для определения переменной и'% x' для ее использования; вам нужно использовать '%% x', чтобы использовать его. – SomethingDark

+1

'' '' '' '' '' '' '' '' '' '' должен также находиться на той же физической линии, что и 'do'. – Magoo

ответ

0

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

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

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

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

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

спасибо, это действительно полезно – Vobla