2013-06-06 4 views
0

Я создаю пакетный файл для автоматизации некоторых резервных копий. Я несколько лет из DOS/пакетной игры, и я довольно ржавый. Я уверен, что моя проблема довольно незначительная, но я не могу заставить мое заявление if ничего делать. Ниже приведена оскорбительная строка:Batch - инструкция IF EXIST не выполняется

IF EXIST %dirname% (echo Directory already exists) ELSE (mkdir %dirname%) 
::dirname in this particular case is: Backup 2013-06-06 
::The directory does exist, so the echo statement should execute. 

Мое высказывание эха, даже если условие выполнено, не запускается. Эта строка отлично работает при вводе в командной строке, но не из .bat. Кто-нибудь знает, в чем проблема?

Спасибо!

ответ

2

Вы должны "экранирует имя" bcause он содержит пробел

IF EXIST "%dirname%" (echo Directory already exists) ELSE (mkdir "%dirname%") 

хотя

mkdir "%dirname%" 2>nul 

также будет работать - он просто подавляет вывод сообщения об ошибке на STDERR (устройство 2)

+0

Это сделало трюк! Я знал, что это просто, но почему-то это ускользнуло от меня. (Я знал о бит 2> nul. Теперь мой IF-оператор будет намного сложнее, если я вернусь к нему). Благодаря! – wmaynard

Смежные вопросы