是否可以直接从 Windows 7 中的批处理文件运行 Windows XP 模式下的程序?

是否可以直接从 Windows 7 中的批处理文件运行 Windows XP 模式下的程序?

我有 Windows 7 UltimateWindows XP 模式已安装。

在我的主机操作系统 (Windows 7) 中,我有一个执行一些命令的批处理文件。我还必须执行安装在 Windows XP 模式中的三个程序(Windows 的 debug.exe 和另外两个程序)。有没有办法直接从批处理文件中运行它们?

谢谢你!

答案1

实现此目的的一种廉价而愉快的方法是通过共享目录(在 XP 和 W7 中可能有不同的路径,但您可以使用驱动器号作为共享并在两者上使其相同)。您可以简单地使用命令和响应文件的存在来同步每个系统上的执行。

在 XP 上,你有一个命令 shell 通过核心循环不断运行:-

:Loop
sleep 10
if not exist {XPshare}\XPcommand.cmd goto Loop
del {XPshare}\XPresponse.txt
call {XPshare}\XPcommand.cmd > {XPshare}\XPcommand.txt
ren {XPshare}\XPcommand.txt XPresponse.txt
del {XPshare}\XPcommand.cmd
goto Loop

您可能想要添加日志记录并以其他方式优化脚本。在call命令之后,您可以echo {unique string}Completion status = %errorlevel% >> {XPshare}\XPcommand.txt在后期分析中添加和选择它。

每当您想从 W7 执行 XP 命令时,请调用一个cmd脚本,并在其参数中传递该命令,并且包含以下内容:-

del {W7share}\XPresponse.txt
echo %* > {W7share}\XPcommand.cmd
:Loop
sleep 2
if exist {W7share}\XPcommand.cmd goto Loop

从此返回后,您可以分析XPresponse.txt并执行任何后期处理。删除 并非绝对必要XPresponse.txt,但这样做只是为了确保先前的响应不会混淆任何 W7 检查。

有无数个版本的sleep.exe,会暂停几秒钟,包括两个来自 MS 的,在Unix 服务以及Windows 资源工具包。要选择的秒数是响应能力和轮询开销之间的平衡。我建议在 W7 上使用较短的间隔,因为轮询仅在 XP 命令执行时进行,而在 XP 上轮询在所有其他时间进行。

相关内容