我在vc中运行下面的代码。
system("@echo off");
system("set a=3");
system("echo %a%");
system("pause");
但它显示为'%a%',但我需要显示为'3'。
我怎样才能做到?非常感谢您的帮助。
我在vc中运行下面的代码。
system("@echo off");
system("set a=3");
system("echo %a%");
system("pause");
但它显示为'%a%',但我需要显示为'3'。
我怎样才能做到?非常感谢您的帮助。
创建“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/ 和类似的工具。
首先,这些命令中的每一个都独立于另一个运行。当您尝试 echo%a%
时,set
for 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");