Проверка существования файла - PullRequest
2 голосов
/ 22 августа 2011

У меня есть следующая bat, но она, кажется, не работает. Я хочу проверить, хранится ли имя файла в tom.txt, если оно существует, я хочу ничего не делать, но если его нет, я хочу запустить runme.bat

Echo Setting variable to file name
set FAT=<C:\tom.txt

ECHO Checking for file, if exists do nothing if not run bat...
if exists %FAT% (
end
)else(
 C:\runme.bat
)

Ответы [ 3 ]

1 голос
/ 22 августа 2011

Есть некоторые незначительные ошибки, которые, однако, являются причиной ваших основных трудностей.

  1. Вы можете прочитать строку из файла с помощью команды SET /P, а не просто с помощью SET:

    SET /P FAT=<C:\tom.txt
    
  2. Ключевое слово в команде проверки существования файла: EXIST, а не EXISTS

    IF EXIST …
    

    Кроме того, если вам нужно только отреагировать на несуществование файла *, вы можете просто добавить NOT:

    IF NOT EXIST …
    

    Итак, вся команда может быть такой:

    IF NOT EXIST %FAT% C:\runme.bat
    
0 голосов
/ 22 августа 2011

Я думаю, что самым простым решением было бы сделать все это в одной строке следующим образом:

IF NOT EXIST C:\tom.txt C:\runme.bat

Переменная не нужна, если вы не собираетесь использовать ее снова, она просто означает еще одну строку кода. Как сказали Алекс Дж и Андрей М, вам нужно убедиться, что команды и параметры написаны правильно.

0 голосов
/ 22 августа 2011

Я считаю, что правильный синтаксис:

if exist %FAT% goto NORUN
C:\runme.bat
:NORUN

Обратите внимание: "существует" против "существует" в вашем коде.Еще пара замечаний:

  1. Файл NUL существует в любом каталоге на любом диске, поэтому проверка на C:\NUL всегда будет возвращать true.
  2. Проверка на наличие файла не всегдаработать правильно на сетевых устройствах.

См. http://support.microsoft.com/kb/65994 для получения дополнительной информации.

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