1

我在vc中运行下面的代码。

 system("@echo off");
 system("set a=3");
 system("echo %a%");
 system("pause");

但它显示为'%a%',但我需要显示为'3'。

我怎样才能做到?非常感谢您的帮助。

4

2 回答 2

2

创建“tmp.bat”文件:

@echo off
set a=3
echo %a%
pause

然后调用

system("cmd /c tmp.bat")

问题是 system() 调用创建了一个“干净”的环境,其中尚未设置“a”变量(在“echo %a%”调用中)。

要将命令序列转换为“可执行”的东西,可能会使用一些特殊的工具,而不是“VC”。

寻找http://www.autoitscript.com/site/autoit/ 和类似的工具。

于 2012-05-15T09:01:26.297 回答
0

首先,这些命令中的每一个都独立于另一个运行。当您尝试 echo%a%时,setfor it (从上一次调用 到system)早已被遗忘。因此,这实际上与您打开一个全新的cmd窗口并输入:

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Pax> echo %a%
%a%

C:\Documents and Settings\Pax> _

您可能需要将所有这些指令放入一个cmd文件中,然后运行:

system ("cmd /c c:\\full\\path\\to\my\\script.cmd");
于 2012-05-15T09:00:37.727 回答