Как проверить, существует ли файл внутри командного файла [дубликата]

372

Мне нужно запустить утилиту только в том случае, если существует определенный файл. Как это сделать в пакете Windows?

Теги:
batch-file

3 ответа

604
Лучший ответ
if exist <insert file name here> (
    rem file exists
) else (
    rem file doesn't exist
)

Или на одной строке (если требуется только одно действие):

if exist <insert file name here> <action>

например, это открывает блокнот на autoexec.bat, если файл существует:

if exist c:\autoexec.bat notepad c:\autoexec.bat
  • 9
    Если вы имеете дело с путями с пробелами: stackoverflow.com/questions/138981/…
  • 4
    @loopkin - else допустимо, смотрите "если /?" ... "Предложение ELSE должно встречаться в той же строке, что и команда после IF. Например: [... многочисленные примеры использования ...]"
Показать ещё 7 комментариев
69
C:\>help if

Выполняет условную обработку в пакетных программах.

IF [NOT] Команда номера ERRORLEVEL

IF [NOT] string1 == строка2 команда

ЕСЛИ [НЕ] EXIST имя файла

28

Попробуйте что-то вроде следующего примера, приведенного в выводе IF /? в Windows XP:

    IF EXIST filename. (
        del filename.
    ) ELSE (
        echo filename. missing.
    )

Вы также можете проверить отсутствующий файл с помощью IF NOT EXIST.

Команда IF достаточно мощная. Результат IF /? будет вознаграждать внимательное чтение. В этом случае попробуйте параметр /? для многих других встроенных команд для большого количества скрытых драгоценных камней.

  • 6
    Почему '.' в конце имени файла? Это опечатка?
  • 5
    Я процитировал текст справки из фактической команды IF встроенной в CMD.EXE, в которой были эти точки. Я не знаю, почему они их включили, это кажется противоречивым. Конечно, ключевое слово EXIST самом деле нуждается в действительном имени файла, которое может быть полностью определено. Другие команды используют текстовое filename. [drive:][path]filename вместо текстового filename. используйте здесь, что, очевидно, яснее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню