我有一堆批处理文件,用程序 A 做这样的事情:
A > log.txt ; grep 'result:' log.txt > result.txt || raise_hell.sh
我想要做的是修改 A 以便它会打印一堆中间结果。然而,这并不像你想象的那么容易,因为 A 做了以下事情:
- 调用 _freopen("somefile","w",stdout),然后
- 在一百万个地方调用 printf(及其变体),并期望输出最终出现在某个文件中。
更改项目中的每一个 printf 对我来说并不实际。更改每个批处理文件也不实际,所以我真的不知道我的输出被重定向到哪里。
理想情况下,我想有一些方法来获得 stdout 的“原始值”,然后写在那里。但是怎么做?我什至可以用其他东西代替对 freopen 的调用,只要输出仍然在它应该的地方结束。
换句话说,我希望 printf 最终出现在一个文件中,并以其他方式将内容打印到标准输出。
我已经尝试了很多事情,部分是基于对这个问题的变体的回答。但是,这些都不起作用,因为它们最终仍然会写入某个文件。欢迎帮助。
编辑:为了清楚起见,这是在 Windows 上,使用 Visual Studio 2010。