Я не могу использовать команду msg в cmd (или пакет, если на то пошло). Как я могу это исправить?

Вопрос:Пока в cmd или создании командного файла я не могу использовать команду msg. Когда я пытаюсь использовать его, он возвращает ошибку msg is not recognized as an internal or external command, operable program or batch file. "Я уверен, что ошибка в том, что я потерял msg.exe в system32, так что может кто-нибудь показать, как это

Вопрос:

Пока в cmd или создании командного файла я не могу использовать команду msg. Когда я пытаюсь использовать его, он возвращает ошибку msg is not recognized as an internal or external command, operable program or batch file. “Я уверен, что ошибка в том, что я потерял msg.exe в system32, так что может кто-нибудь показать, как это получить? Я запускаю Windows 8.1.

Лучший ответ:

msg.exe не доступен на всех платформах Windows во всех средах.

Существует только %SystemRoot%System32msg.exe (64-разрядная %SystemRoot%SysWOW64msg.exe), но нет %SystemRoot%SysWOW64msg.exe (32-разрядная версия) для Windows 7 x64 Enterprise, из-за чего необходимо получить доступ к 64-разрядному msg.exe из в 32-битном командном процессе, используя %SystemRoot%Sysnativemsg.exe.

Дополнительные сведения о System32, SysWOW64 и Sysnative см. В статье Microsoft о Sysnative файловой системы

Что это значит?

  1. Для запуска пакетного файла на 32-разрядной Windows необходимо запустить %SystemRoot%System32msg.exe.

  2. Командный файл, выполняемый в 64-разрядной Windows 64-разрядным cmd.exe должен запускать %SystemRoot%System32msg.exe.

  3. Командный файл, выполняемый в 64-разрядной Windows 32-разрядным cmd.exe должен запускать %SystemRoot%Sysnativemsg.exe.

Это зависит от ширины битов родительского процесса, начиная с cmd.exe или командного файла, который неявно приводит к запуску cmd.exe для исполнения командного файла, если пакетный файл выполняется в 32-разрядной или 64-разрядной среде на 64-битной Windows,

Таким образом вызывается пакетный файл с использованием явно %SystemRoot%Sysnativecmd.exe из 32-разрядного приложения в Windows x64 или внутри пакетного файла %SystemRoot%Sysnativemsg.exe используется на машине Windows x64 во время работы необходимо использовать Windows x86 %SystemRoot%System32cmd.exe %SystemRoot%System32msg.exe.

Демо-пример для первого варианта с использованием 64-разрядного интерпретатора командной строки:

Пакетный файл с именем MsgDemo.bat:

@echo off %SystemRoot%System32msg.exe /? pause

вызывается из 32-разрядного процесса, выполняющегося в Windows x64, с:

%SystemRoot%Sysnativecmd.exe /C MsgDemo.bat

Демо-пример для второго варианта с правильной ссылкой msg.exe:

@echo off set «AppMsg=%SystemRoot%System32msg.exe» if not «%ProgramFiles(x86)%» == «» ( rem Explicitly reference 64-bit version on Windows x64 as there is rem no 32-bit version. But use Sysnative redirector only if the batch rem file was started with 32-bit cmd.exe as otherwise System32 contains rem msg.exe if it is not missing at all like on Windows 7 Home Premium. if exist %SystemRoot%Sysnative* set «AppMsg=%SystemRoot%Sysnativemsg.exe» ) %AppMsg% /? set «AppMsg=» pause

Редиректор %SystemRoot%Sysnative не существует для 64-битных процессов, только для 32-битных процессов.

%SystemRoot%Sysnative не является каталогом. Поэтому, if exist %SystemRoot%Sysnative не работает, просто if exist %SystemRoot%Sysnative*.

Ответ №1

Скопируйте файл msg.exe из любого ПК с Windows 7 из каталога system32 и прошлого целевого ПК system32.

Работа для меня отлично

Оцените статью
Добавить комментарий