Вопрос: Команда Force (фраза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» -no кавычки, написанные на нем), а затем вызывает его с помощью PhraseExpress, но я получаю тот же результат. (файл вызывает 64-битную командную строку при двойном щелчке, но 32-битную версию при вызове с помощью PhraseExpress).

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


0
2017-09-19 22:46


Источник




Ответы:


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

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

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

Поэтому попробуйте указать его через "Sysnative».

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


1
2017-09-19 23:22



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