Я хочу создать файл, используя Sublime Text 2, а затем сделать простую копию. Мне удалось сделать первое, используя систему сборки, и я думаю, что должна быть возможность сделать копию и с системой сборки (потому что я могу сделать это в пакетном файле).

Пакетный скрипт делает то, что я хочу сделать:

copy /b hang.bin+sectors.bin image.img

И система сборки, которую я использую:

{
"cmd": ["copy", "/b", "hang.bin+sectors.bin", "image.img"],
"working_dir": "$file_path"
}

Сообщение об ошибке, которое я получаю:

[Error 2] The system can't find the specified file
[cmd:  [u'copy', u'/b', u'hang.bin+sectors.bin', u'image.img']]
[dir:  C:\Documents and Settings\xxx\Desktop\Project]
[path: C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Ulead Systems\MPEG]
[Finished]

Да, я жестко закодировал файл hang.bin, чтобы посмотреть, сработает ли это, но нет. Обычно я бы использовал ${file_name}.bin там.

Я подозреваю, что синтаксис + двух файлов, которые должны быть скопированы (в один новый файл), является проблемой, но я не уверен. Кто-нибудь может мне помочь?

1 ответ1

1

Запустите команду where copy в командной строке, и вы увидите, что copy - это не программа, а встроенная команда, предоставляемая cmd . Sublime Text запускает системы сборки изначально, без cmd , поэтому он не распознает copy .

Есть обходной путь: выполните команду через cmd . С помощью cmd :

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] string]

/C      Carries out the command specified by string and then terminates

Так, например, cmd /C notepad запустит Notepad и сразу выйдет, не дожидаясь его выхода. cmd /C copy тоже будет работать, потому что выполняется через cmd . Ваша команда должна выглядеть так:

cmd /C "copy /b hang.bin+sectors.bin image.img"

Помните о кавычках, в противном случае /b и остальная часть команды будут представлены как аргументы для cmd , а не для copy .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .