1

что бы я ни пытался, я не получаю следующую строку в командном файле на моей 64-битной машине win7:

forfiles /P "I:\testroot" /C "CMD /C if /i @FILE==testung.txt del /s @FILE"

Код выполняется, ошибки не отображаются, но файл testung.txt не удаляется.

Если кого-то интересует официальный синтаксис от MS:

http://technet.microsoft.com/de-de/library/cc753551%28v=ws.10%29.aspx

Так в чем же проблема?

1 ответ1

2

Вы пропустили пару двойных кавычек ...

Что происходит, так это то, что @FILE возвращает имя файла, заключенное в двойные кавычки, поэтому вам нужно ссылаться на него как таковое при сравнении операторов IF.

Вы можете убедиться в этом, выполнив forfiles /P "I:\testroot" /C "CMD /C echo @FILE" и увидев, что testung.txt как "testing.txt" .

Чтобы использовать двойные кавычки в строке (а не в качестве разделителя строк), вам нужно экранировать их с помощью \ .

Поэтому, как только мы это сделаем, это должно сработать:

forfiles /P "I:\testroot" /C "CMD /C if /i @FILE==\"testung.txt\" del /s @FILE"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .