我在vc。
中运行以下代码 system("@echo off");
system("set a=3");
system("echo %a%");
system("pause");
但它显示为'%a%',但我要求显示为'3'。
我该怎么做? 非常感谢你的帮助。
答案 0 :(得分:2)
创建“tmp.bat”文件:
@echo off
set a=3
echo %a%
pause
然后调用
system("cmd /c tmp.bat")
问题是system()调用创建了一个“干净”的环境,其中“a”变量尚未设置(在“echo%a%”调用中)。
要将命令序列转换为“可执行”的东西,可以使用一些特殊工具,而不是“VC”。
答案 1 :(得分:0)
首先,这些命令中的每一个都独立于另一个命令运行。当您尝试回复%a%
时,它的set
(从之前的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");