2012-03-06 7 views
0

В Windows CMD партии, я пытаюсь вызвать командный файл:Failture в CMD пакетном файле

call ".\%%R\scenery\list bgl.bat" ".\%%R\scenery\" 

В "списке bgl.bat" У меня есть:

IF "%1"=="" (dir *.bgl /b > list_bgl.txt) ELSE (dir "%1*.bgl" /b > list_bgl.txt) 

и он выходит из строя где-то на месте состояния. Если истинная часть работает нормально (если я запускаю пакетный список bgl.bat "напрямую). Но если я запустил его из командного файла, так что блок else завершится с ошибкой и сбой сценария. Увидите, где проблема?

Update:

T:\test\scenery>call ".\list bgl.bat" 
T:\test\scenery>IF "" == "" (dir *.bgl /b 1>list_bgl.txt) ELSE (dir "*.bgl" /b 1>list_bgl.txt) 
T:\test\scenery>ECHO DONE 
DONE 

T:\test\scenery>pause 
Press any key to continue 

T:\test\scenery>call ".\list bgl.bat" ".\" 
T:\test\scenery>IF ".\" == "" 
(dir *.bgl /b 1>list_bgl.txt) ELSE (dir ".\*.bgl" /b 1>list_bgl.txt) 
T:\test\scenery>ECHO DONE 
DONE 

T:\test\scenery>pause 
Press any key to continue 
T:\test\scenery> 

Ну это работает. Параметр команды №. 1 был протестирован из CMD-линии

EDIT2: Когда я звоню основную партию (из родительского каталога) я не вижу никакой ошибки, но файл не создается в указанном каталоге, но в главном каталоге, откуда основной пробег был выполнен:

:

@echo off 
cls 
for /F "tokens=*" %%R in ('dir * /A:D /b') do (
echo ".\%%R\scenery\list bgl.bat" 
call ".\%%R\scenery\list bgl.bat" ".\%%R\scenery\" 
) 
pause 

EDIT3: Да, у меня есть. Проблема здесь:

> list_bgl.txt 

Я скучаю по пути туда ... Это работает:

IF "%~1"=="" (dir *.bgl /b > list_bgl.txt) ELSE (dir "%~1*.bgl" /b > "%~1list_bgl.txt") 
+0

Что делать, если вы запустили «список bgl.bat» с параметром? например: '" list bgl.bat "" фиктивный параметр "' – vulkanino

+0

Ну, я пытаюсь обновить свой пост. См. Выше – user1141649

+1

Вы поняли, что путь ''. \ %% R \ scenery \ "' точно такой же, как '%% R \ scenery \" '? Точка означает «текущий каталог», поэтому «. Anydir» является Anydir ниже текущего каталога ... – Aacini

ответ

4

Вы уже заключая свой параметр в кавычки во время вызова, а затем добавить второй набор цитат в " list bgl.bat ". Это может вызвать проблемы. Если вы хотите добавить закрывающие кавычки в «list bgl.bat», вам необходимо сначала удалить любые существующие существующие котировки с использованием %~1.

IF "%~1"=="" (dir *.bgl /b > list_bgl.txt) ELSE (dir "%~1*.bgl" /b > list_bgl.txt) 

обновление
Вы показали пример того, что работает, но мы должны видеть, что не работает. Проблема quote /% ~ была реальной, но похоже, что у вас есть что-то еще, что вызывает проблемы. Мне любопытно, что такое временная величина %% R? Я также удивлен, что путь к вашему вызываемому пакетному файлу может отличаться.

+0

о, вы получили это правильно, вероятно! – Benoit

+0

Спасибо, но все равно не работает. хотя я добавил символ ~ ... – user1141649

+0

Я сделал тест и обновил сообщение. – user1141649

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