2015-10-25 7 views
-1

Я хочу преобразовать файл .bit в файл .ace с помощью командной строки. Я пытаюсь создать файл .bat для этого. Но когда я выполняю команду, никакие файлы не добавляются в указанный каталог.Ошибка при преобразовании битовых файлов в файлы туза

Пакетный файл с именем makeace и имеет следующий код:

@echo off 
if "%1" == "" goto error 
xmd -tcl ./genace.tcl -jprog -hw %1.bit -board ml505 -ace my_%1.ace 
goto end 
:error 
echo Makeace - by FPGA Developer http://www.fpgadeveloper.com 
echo. 
echo Usage: makeace bitfile (without .bit extension) 
echo Example: makeace project 
:end 
echo. 

Файл .BIT на мой тест был назван comp.bit.

Команда, используемая для тестирования было:

makeace comp 

Он работал без ошибок, но без добавления нового файла.

Что может быть ошибкой в ​​пакетном коде выше?

+0

код выглядит нормально. Попробуйте удалить '@echo off' и снова запустить. Также попробуйте запустить конвертер непосредственно в командной строке, используя фактическую строку 'comp' вместо'% 1' – wOxxOm

+0

. Я пробую это, тот же результат. есть ли место, где оно хранится? Или в том же каталоге? – sepeee

+0

Ну, ваш код ищет файл в текущем каталоге. – wOxxOm

ответ

0

Я предлагаю использовать для пакетного файла:

@echo off 
if "%~1" == "" goto ShowHelp 
if "%~1" == "/?" goto ShowHelp 

rem Get just file name without file extension and path. 
set "BitFileName=%~n1" 
rem Get drive and path of file ending with a backslash. 
set "BitFilePath=%~dp1" 

xmd.exe -tcl ./genace.tcl -jprog -hw "%BitFilePath%%BitFileName%.bit" -board ml505 -ace "%BitFilePath%my_%BitFileName%.ace" 

set "BitFileName=" 
set "BitFilePath=" 
echo. 
goto :EOF 

:ShowHelp 
echo Makeace - by FPGA Developer http://www.fpgadeveloper.com 
echo. 
echo Usage: makeace bitfile 
echo. 
echo Example: makeace project 
echo. 
pause 

Теперь это не имеет значения, если пакетный файл вызывается с именем файла, имеющий .bit добавляется или нет. И теперь он работает также для имен файлов с 1 или более пробелами или другими символами, указанными на последней странице справки, путем запуска cmd /? в окне командной строки.

:EOF - это предопределенная метка, которая не должна быть явно определена в пакетном файле. goto :EOF, как exit /B, то есть выйти из этого командного файла и продолжить обработку команд в родительском процессе, что означает выход из командного процессора, если родительский процесс - это процесс команды cmd.exe, вызываемый без /K, чтобы открыть окно командной строки после завершения пакетной обработки.

Чтобы понять используемые команды и как они работают, откройте окно командной строки, выполните там следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.

  • call /? ... %~1 объясняет, %~n1 и %~dp1.
  • echo /?
  • goto /?
  • if /?
  • pause /?
  • rem /?
  • set /?
+0

та же проблема, ничего не изменилось :( – sepeee

+0

@sepeee Я согласен с [wOxxOm] (http://stackoverflow.com/users/3959875/woxxom). Сам пакетный файл работает. У нас нет 'xmd.exe', чтобы проверить, действительно ли этот исполняемый файл, вызванный без пути, находится в командном процессоре, и параметры подходят для этой утилиты. Прочтите документацию по этому инструменту или это поможет. './genace.tcl' может быть проблемой. Возможно, лучше указать этот файл с полным путем в двойных кавычках, то есть '' Диск: \ Путь к файлу \ genace.tcl ", поскольку этот файл, возможно, не находится в текущем каталоге. – Mofi

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

  • Нет связанных вопросов^_^