невозможно выполнить (ошибка 2) при использовании forfiles - PullRequest
3 голосов
/ 07 декабря 2010

Я хотел, чтобы один файл удалил все файлы старше 14 дней в определенной папке.

Это моя команда

forfiles -px: \ logs -s -m * .log -d-14 -c "CMD / C del @file"

, но при выполнении выдает "невозможно выполнить (ошибка 2)" для каждого найденного файла.Если -c "CMD / c del @file" опущен, он работает нормально, создавая список файлов старше 14 дней.Сначала я подумал, что это может быть проблема с разрешением;но любое действие над файлом приводит к тому же результату, и я являюсь администратором на компьютере.

Однако это общий сетевой ресурс, если это делает разницу.

Спасибо

Ответы [ 3 ]

1 голос
/ 15 февраля 2012

Я нашел ответ на этот вопрос:

set DP_DIR=C:\Scripts

forfiles -p%DP_DIR% -s -m*.exe -d-3 -c"cmd /c del \"@FILE""

Это прекрасно работает.

1 голос
/ 07 декабря 2010

Какое значение @file и каков текущий каталог, когда вы запускаете код?

winerror.h говорит, что ошибка 2 равна

#define ERROR_FILE_NOT_FOUND             2L

, поэтому япопытается полностью указать путь к файлу, который удаляется.

- РЕДАКТИРОВАТЬ:

, что можно сделать, выполнив

forfiles -px:\logs -s -m*.log -d-14 -c"CMD /C del @path"

вместо

forfiles -px:\logs -s -m*.log -d-14 -c"CMD /C del @file"
0 голосов
/ 14 декабря 2012

Я использую FORFILES v 1.1 с апреля 1998 года.

В моей ситуации, если @PATH или @FILE содержит путь с пробелом в нем, это будет обработано неправильно.Пути с пробелами требуют двойных кавычек вокруг него.Поскольку выполнение команды в forfiles требует двойных кавычек, это то, что я использую в своих пакетных файлах.0x22 сохраняется в командном файле в виде двойных кавычек.Я считаю, что явное окружение пути и файла двойными кавычками обеспечивает надежную обработку файлов.

forfiles -pC:\pictures\ -m*.jpg -d-30 -c"cmd /c echo del 0x22@PATH\@FILE0x22" > c:\temp\delold_pics.bat

call c:\temp\delold_pics.bat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...