Фон:
На работе у нас довольно много скриптов и маленьких помощников с пакетными файлами (xyz.cmd
). Windows 7 только начинает распространяться здесь, и, очевидно, мы сталкиваемся с проблемами, связанными с различными переменными среды 32-битных и 64-битных окон.
В частности, если вы запустите C:\Windows\system32\cmd.exe
в 64-битной Windows, вы получите:
...
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
...
тогда как, если вы запустите C:\Windows\SysWOW64\cmd.exe
в 64-битной Windows, вы получите:
...
ProgramFiles=C:\Program Files (x86) <-- NOTE
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
...
Так же бывает, что поскольку этот cmd.exe является 32-битным процессом, он также получает все другие перенаправления SysWOW64 "бесплатно" - любой вызов regedit
пойдет в 32-битный реестр и т.д.
Это может быть чрезвычайно полезно, если командный файл должен выполнять некоторые задачи, связанные с 32-битным приложением, например, путь + реестр.
Вопрос:
Даже если у меня есть класс пакетных файлов, которые я хотел бы всегда запускать с 32-битной версией cmd.exe
, есть ли это - просто! способ заставить эти пакетные файлы всегда использовать 32-битный cmd.exe на 64-битных версиях Windows и нормально работать на 32-битных версиях Windows?
Очевидно, что я могу добавить "заголовок" к каждому такому пакетному файлу, чтобы изменить переменные среды и вызовы regedit, и / или, очевидно, я мог бы просто сказать пользователям «запускать этот пакетный файл через SysWOW64 cmd.exe», но ни одно из этих решений не кажется очень привлекательный :-)