作者tropical72 (蓝影)
看板Programming
标题[问题] c return variable to batch(已解决)
时间Thu Sep 15 19:10:33 2011
※ [本文转录自 C_and_CPP 看板 #1ESTc87y ]
Windows XP
这问题不知道有没有人遇过..
假设要写一功能之程式(批次档)
为输入 a b , 算 a+....+b
一般我们在写 batch file 时,有类似 func-like 写法如下
:: filename : sum.bat
@echo off
:sum
SETLOCAL ENABLEDELAYEDEXPANSION
SET low=%~1
SET up=%~2
SET rst=0
FOR /L %%I IN (%low%, 1, %up%) DO (
SET /A rst+=%%I
)
(ENDLOCAL
SET %3=%rst%
)
:: filename:main.bat
@echo off
:main
SET rst=0
call sum.bat 1 10 rst
echo 1+...+10=%rst%
pause > nul
这里要问的是,如果 main.bat 里面,sum.bat 改成 sum.exe 的话,
有没有办法完成?
我想破头还是想不出来,
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int i=0, rst=0;
for(i=atoi(argv[1]); i<=atoi(argv[2]); ++i)
rst+=i;
sprintf(argv[3], "%d", rst);
return 0;
}
我知道这样一定会出包,而且很严重,
主要是想问,C language 有没有办法把结果传进
batch 里面之环境变数里?
目前我是用 redirection 方式, 在 c 里面会把结果 print 出来,
用 batch 调用时, sum.exe 1 10 > log.txt ,
到时再用 batch 读 log.txt 便知结果 ,
想请教是不是只有这方法可行?或还有其他方法可得到类似效果?
( 用 C 写 application 给 batch 调用)
谢谢各位不吝指导,感激不尽!
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.177.78.41
※ 编辑: tropical72 来自: 180.177.78.41 (09/15 19:11)
1F:→ priv:1. return 0改成return rst 140.113.23.102 09/15 20:43
2F:→ priv:然後再印出errorlevel 140.113.23.102 09/15 20:45
3F:→ priv:2. 使用win32 api 140.113.23.102 09/15 20:45
4F:→ priv:SetEnvironmentVariable()这个function 140.113.23.102 09/15 20:45
5F:→ priv:这两个方法应该最接近你原本用call的效果 140.113.23.102 09/15 20:53
6F:→ priv:不过不晓得你的compiler 140.113.23.102 09/15 20:54
7F:→ priv:2的方法以前在cygwin上会有点问题 140.113.23.102 09/15 20:54
8F:→ tropical72:不考虑用errorlevel,因到时会用到浮点 180.177.78.41 09/15 21:35
9F:→ tropical72:数,2之方法我试一下好了(vs),谢谢您!! 180.177.78.41 09/15 21:35
※ 编辑: tropical72 来自: 180.177.78.41 (09/15 22:48)