答案我的另一个问题(不久前)我用来运行命令提示符的程序运行的是 cmd 提示符的 32 位版本,而不是 64 位版本。
(如果您没有看到另一个问题,我使用的是 Windows 7,64 位)。
一开始这没什么,但现在它再次变成了一种麻烦。
我尝试通过键入文件名称从任何目录打开文件(在本例中为批处理文件)。我将文件的目录添加到 PATH 变量中,以便可以正常工作。
现在,如果我打开一个 64 位 cmd 提示符(例如,运行->cmd),一切都会正常进行:例如,输入“color-1”会更改为“color-1.bat”文件中指定的颜色。
但是,当使用 32 位版本时,我只收到“无法识别”的消息。
因此,我需要让该程序调用 64 位版本的命令提示符。有问题的程序是 PhraseExpress(无空格),并且在宏版本框中我有
{#run-file“C:\windows\system32\cmd.exe”}。
注意我指定了我想要的 cmd.exe 文件的路径,而不是仅仅写 {#运行-文件cmd} 希望它实际上适用于 64 位版本,而不是 32 位版本,但没有运气:命令提示符进程始终是 32 位(在任务管理器中检查)。
我还尝试创建一个运行 cmd 的批处理文件(文件上只写有“cmd”-没有引号-),然后使用 PhraseExpress 调用它,但得到的结果相同。(文件双击时调用 64 位命令提示符,但使用 PhraseExpress 调用时调用 32 位版本)。
现在,我没有什么主意了,所以……有人能想到什么吗?
答案1
我认为您只是没有将批处理文件放在两个命令环境共享的路径中。除非您的批处理文件内容是 64 位特定的,否则您应该在两个/所有环境中设置路径,以便它们可以在任一环境中运行,而不是试图欺骗此程序使用您想要的 cmd.exe。
但是,直接回答你的问题......
由于对于 32 位程序,system32 透明地重定向到 sysWOW64,因此他们添加了一种访问系统架构(64 位)原生的 system32 文件夹的方法——“真正的”system32 文件夹。
因此尝试通过“系统性“。
IE:{#run -file "%WINDIR%\sysnative\cmd.exe"}