作者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)
→ priv:1. return 0改成return rst 140.113.23.102 09/15 20:43
→ priv:然後再印出errorlevel 140.113.23.102 09/15 20:45
→ priv:2. 使用win32 api 140.113.23.102 09/15 20:45
→ priv:SetEnvironmentVariable()這個function 140.113.23.102 09/15 20:45
→ priv:這兩個方法應該最接近你原本用call的效果 140.113.23.102 09/15 20:53
→ priv:不過不曉得你的compiler 140.113.23.102 09/15 20:54
→ priv:2的方法以前在cygwin上會有點問題 140.113.23.102 09/15 20:54
→ tropical72:不考慮用errorlevel,因到時會用到浮點 180.177.78.41 09/15 21:35
→ tropical72:數,2之方法我試一下好了(vs),謝謝您!! 180.177.78.41 09/15 21:35
※ 編輯: tropical72 來自: 180.177.78.41 (09/15 22:48)