C_and_CPP 板


LINE

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:转录至看板 Programming 09/15 19:10 tropical72:转录至看板 EZsoft 09/15 19:11
1F:→ firejox:用for or set应该都可以给吧... 09/15 19:11
2F:→ tropical72:在c里调用set,那最後batch 怎知要去接哪个?写死吗? 09/15 19:28
3F:→ firejox:不能写在batch吗? 09/15 19:31
4F:→ tropical72:耶..这就是我纳闷的地方.怎用c写一个application可让 09/15 19:35
5F:→ tropical72:batch 接结果? 09/15 19:35
6F:→ firejox:喔 我懂了 用popen呼叫sum.exe 09/15 19:37
7F:→ firejox:忽略楼上... 09/15 19:38
8F:→ tropical72:拿到keyword了!!先研究一下,晚些回报,感谢!! 09/15 19:38
9F:→ tropical72:嗯..popen 似乎没办法把结果传回 batch 里去 XD 09/15 19:58
10F:推 ericinttu:你要不要用C把要做的batch事情, 转存成.bat档, 再去执行 09/15 20:20
11F:→ ericinttu:呢? (不知道这样做,对你会不会比较简单?) 09/15 20:20
嗯,动作洽好有点相反,一般是在 C language 呼叫 batch / command line, 但这只 c 主要是写给 batch file 使用, 基本上可以用 batch 做的当然用 batch 较方便, 不过 batch 设计整个死在没有 array / floating, 再加上 batch 调用 recursive 的话整个慢到一个不行 (recur 可用 stack 也较小) 所以才想用 c 先包一些简单的 library (math 应该是准备全包了) 出来, 给 batch 调用,补足 batch 先天不足。 当然如果搞下去很复杂的话,不排斥转搞 vbs
12F:推 ericinttu:所以标题写错方向? 09/15 20:38
已修正,再补一下,用 putenv 失败。 ※ 编辑: tropical72 来自: 180.177.78.41 (09/15 20:39)
13F:→ firejox:for /f %%G in ('sum.exe') do ? 09/15 20:39
14F:→ tropical72:上面那行可以多次用sum.exe执行没错,但该怎取出结果? 09/15 20:50
15F:→ tropical72:c 里用 printf 後,batch 就没办法用 SET/call 取结果. 09/15 20:51
16F:→ firejox:?? %%G 就是结果呀 09/15 20:55
17F:→ firejox:比方说for /f %%G in ('sum.exe 1 10') do echo %%G 09/15 20:56
18F:→ firejox:G就是吃sum 命令的output呀 09/15 20:57
19F:→ priv:就可以少一步转到log.txt再读出来的动作 09/15 21:02
20F:→ tropical72:耶..是有点怪怪的,请问sum.exe那里,55会怎处理? 09/15 21:34
21F:→ tropical72:printf("%d\n", ret); 像这样吗? 09/15 21:34
22F:→ firejox:恩恩 是的 09/15 21:47
我似乎干了傻事,或该拜拜了.. .c 用 printf 的确就行了,而 batch 从头到尾的确都用 for 写就行 @echo off SETLOCAL EnableDelayedExpansion FOR /F "tokens=* delims=" %%A in ('sum_gcc.exe 1 10') DO ( SET myvar=%%A echo !myvar! ) ENDLOCAL @echo off SETLOCAL EnableDelayedExpansion FOR /F "tokens=* delims=" %%A in ('sum_vc.exe 1 10') DO ( SET myvar=%%A echo !myvar! ) ENDLOCAL pause > nul for 那段 firejox 的也没错 (EnableDelayedExpansion 必加就不说了) 一开始神奇的事情是,直接在 command line 输入 sum_vc.exe 1 10 不会跑出结果 (抓这个抓了一个下午,最後才测到这个 XD) 後来用 gcc 试试却可以跑。 重开机、重编译後,现在一切正常了,现在还在想 vc 那段 bug 可能没重现性了。 最後谢谢 firejox, priv , ericinttu 协助处理,感激不尽。 ※ 编辑: tropical72 来自: 180.177.78.41 (09/15 22:34) ※ 编辑: tropical72 来自: 180.177.78.41 (09/15 22:41)
23F:→ priv:VC可能是环境的问题吧 09/16 13:33
24F:→ priv:要开win32 console project.. 09/16 13:33
25F:→ tropical72:谢谢priv提醒,由於问题没回复性了,也难追回 XD 09/16 18:33







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP