ошибка в командном файле CMD - PullRequest
0 голосов
/ 06 марта 2012

В Windows cmd batch я пытаюсь вызвать командный файл:

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 )

, и он падает где-то вместо состояния.Часть if true работает нормально (если я запускаю пакет "list bgl.bat" напрямую).Но если я запустил его из командного файла, сбой блока else приведет к сбою скрипта.Видите, где проблема?

Обновление:

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-line

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" )

1 Ответ

4 голосов
/ 06 марта 2012

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

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

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

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