强制 bat 文件使用非默认的 cmd.exe

Posted

技术标签:

【中文标题】强制 bat 文件使用非默认的 cmd.exe【英文标题】:Force bat file to use non default cmd.exe 【发布时间】:2011-12-16 14:14:16 【问题描述】:

我正在编写一个 .bat 文件来自动处理一些脚本生成,因此我不必每次运行它时都输入六个命令参数。

我必须从批处理文件中运行一个 vb 脚本

@call ..\Database\scripts\runscriptupdates.vbs

但是,脚本只有在使用来自的命令提示符时才会运行

C:\Windows\SysWOW64\cmd.exe

bat文件默认使用system32中的cmd.exe

C:\Windows\System32\cmd.exe

有没有办法强制批处理文件使用这个 cmd.exe 来运行 vbs 文件?我已经在网上搜索了大约一个小时,但没有找到任何有用的东西(到目前为止)。

我尝试使用“start ...”运行 syswow64,但它似乎没有接受它之后的参数。

非常感谢,尼尔

【问题讨论】:

【参考方案1】:

你可以试试:

%windir%\SysWoW64\cmd.exe /c mybatch.bat

这将从 32 位命令提示符运行批处理本身。因此,对 vbs 的调用也将来自 32 位命令提示符。

【讨论】:

这可以解决问题,打开新窗口,然后一切正常运行。能够在一个批处理文件中完成它会很好,所以我会在选择答案之前将问题保留一天。再次感谢您的帮助!【参考方案2】:

我也遇到了这个问题,我找到了解决方法。 你只需要更改System Variables

转到控制面板 » 系统 » 高级系统设置 » 环境变量

找到变量ComSpec,然后只需点击Edit...并将路径更改为"C:\Windows\SysWow64\cmd.exe"

【讨论】:

【参考方案3】:

尝试在批处理文件中输入这一行。

%windir%\SysWoW64\cmd.exe /c ["]cscript [脚本名称] [主机选项] [脚本参数 ]["]

地点:

script name 是脚本文件的名称,包括文件扩展名和任何必要的路径信息。

主机选项是启用或禁用各种 Windows 脚本主机功能的命令行开关。主机选项前面总是有两个斜杠 (//)。

脚本参数是传递给脚本的命令行开关。脚本参数前面总是有一个斜杠 (/)。

例子:

%windir%\SysWoW64\cmd.exe /c "cscript VoltageDrop.vbs /"Campbell.sin" "L08""

注意:在这一行中,我没有传递任何主机选项。该命令将执行字符串,

cscript VoltageDrop.vbs /"Campbell.sin" "L08"

作为 32 位命令提示符中的命令。

【讨论】:

以上是关于强制 bat 文件使用非默认的 cmd.exe的主要内容,如果未能解决你的问题,请参考以下文章

怎样自动以管理员身份运行bat文件

win7中运行bat批处理管理员权限问题

Windows 上的 Python 子进程:启动子进程“cmd.exe”并为其提供 bat 文件,停止主进程执行

如何恢复cmd的默认窗口大小等设置

vista下如何以管理员身份开机运行bat文件

使用cmd.exe以UTF-8编码保存文本文件