Заставить программу (фразуexpress) открыть 64-битную командную строку

3578
Sampaio

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

Прямо сейчас у меня заканчиваются идеи, так что ... кто-нибудь может что-то придумать?

0

1 ответ на вопрос

1
Ƭᴇcʜιᴇ007

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

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

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

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

то есть: {#run -file "%WINDIR%\sysnative\cmd.exe"}

Для первой части я мог бы это сделать, но есть и другие вещи, над которыми я работаю, для которых полезно 64-битное приглашение cmd. Ссылка sysnative сработала, заставив программу вызвать 64-битную командную строку. Однако, и это может не иметь отношения, переменная PATH в вызываемом терминале отличается от переменной PATH в вызываемом терминале с помощью Run-> cmd: в ней отсутствует путь, который я добавил в Advanced System Settings-> Environment Variables. Есть ли другой способ изменить значение PATH? (Я пробовал PATH = * my_path *, но он работает только до тех пор, пока я не закрою эту конкретную команду cmd). Кстати, если это не связано, я приму ответ. Sampaio 10 лет назад 0
@Sampaio Ты уверен? Здесь изменения в PATH через «Дополнительные параметры системы-> Переменные среды», как пользовательские, так и системные, отражаются в «% windir% \ System32 \ cmd.exe` и«% windir% \ SysWOW64 \ cmd.exe ». Попробуйте запустить их через run и проверьте `set path`. Rik 10 лет назад 1
Изменения наконец вступили в силу, и все хорошо. Я проверил это сразу после включения компьютера, после выключения прошлой ночью и выключения с тех пор. В то время я пытался перезагрузить компьютер, но, полагаю, компьютер не думал, что это был достаточно длительный отдых или что-то ... В любом случае, проблема (проблемы) решена, ответ принят. Спасибо вам за помощь. Sampaio 10 лет назад 0
Компьютеры тоже нуждаются в сне ;-) Rik 10 лет назад 0