Заставить программу (фразу express) открыть 64-битную командную строку
Ответ на другой мой вопрос (некоторое время назад) состоял в том, что программа, которую я использовал для запуска командной строки, запускала 32-битную версию, если в командной строке cmd, вместо 64-битной.
(Если вы не увидели другой вопрос, я использую Windows 7, 64 бита).
Некоторое время это было прекрасно, но теперь это снова стало неприятностью.
Я пытаюсь открыть файлы (в данном случае пакетные файлы) из любого каталога, просто набрав их имена. Я добавил каталог файлов в переменную PATH, чтобы это работало.
Теперь, если я открою 64-битное приглашение cmd (Run->cmd, для каждого примера), все будет работать отлично: ввод "color-1" изменит цвет, указанный в файле "color-1.bat", для каждого примера.
Однако, когда используется 32-битная версия, я просто получаю сообщение "не распознано".
Итак, мне нужно, чтобы эта программа вызывала 64-битную версию командной строки. Рассматриваемая программа - PhraseExpress (без пробела), и в окне редактирования макроса я имею
{#run -file "C:\windows\system32\cmd.exe"}.
Заметьте, что я указал путь к файлу cmd.exe, который хотел, вместо того, чтобы просто написать {#run -file cmd} в надежде, что он на самом деле подходит для 64-битной версии, а не для 32-битной, но не повезло: процесс командной строки всегда 32-битный (проверено в диспетчере задач).
Я также попытался создать командный файл, который запускает cmd (на нем просто написано "cmd" - без кавычек), а затем вызвать его с помощью PhraseExpress, но я получаю тот же результат. (файл вызывает 64-битную командную строку при двойном щелчке, но 32-битную версию при вызове с PhraseExpress).
Прямо сейчас у меня заканчиваются идеи, так что... кто-нибудь может что-то придумать?
1 ответ
Я думаю, что у вас просто нет командных файлов в пути, совместно используемом обеими командными средами. Если содержимое вашего пакетного файла не является специфичным для 64-битных систем, вы должны стремиться к настройке пути в обеих / всех средах, чтобы они работали в любой из них, вместо того, чтобы пытаться обмануть эту программу, используя нужный вам cmd.exe.
Но, чтобы прямо ответить на ваш вопрос...
Поскольку system32 прозрачно перенаправляется на sysWOW64 для 32-разрядных программ, они добавили способ доступа к папке system32, которая является родной для архитектуры системы (64-разрядная) - "реальной" папке system32.
Так что попробуйте ссылаться на него через " sysnative".
то есть: {#run -file "%WINDIR%\sysnative\cmd.exe"}