Ответ на другой мой вопрос (некоторое время назад) состоял в том, что программа, которую я использовал для запуска командной строки, выполняла 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 ответ1

1

Я думаю, что у вас просто нет командных файлов в пути, совместно используемом обеими командными средами. Если содержимое вашего пакетного файла не является специфичным для 64-битных систем, вы должны стремиться к настройке пути в обеих / всех средах, чтобы они выполнялись в любой из них, вместо того, чтобы пытаться заставить эту программу использовать нужный вам cmd.exe.

Но, чтобы прямо ответить на ваш вопрос ...

Поскольку system32 прозрачно перенаправляется в sysWOW64 для 32-разрядных программ, они добавили способ доступа к папке system32, которая является родной для архитектуры системы (64-разрядная версия) - «реальной» папке system32.

Так что попробуйте ссылаться на него через " sysnative ".

ie: {#run -file "%WINDIR%\sysnative\cmd.exe"}

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