我有一个执行
java应用程序的批处理文件.我试图修改它,以便每当发生异常时,它会将STDERR写入一个文件.
看起来像这样:
start java something.jar method %1 %2 2>> log.txt
有没有办法我可以将参数%1和%2写入log.txt文件?每次这个批处理文件被调用时,只有发生异常时,我不想将其写入日志文件.
我试图寻找一种将STDERR重定向到一个变量的方法,但是我无法理解.理想情况下,我希望日志文件看起来像:
Batch file called with parameters: - "first arg" - "second arg" Exception: java.io.exception etc... ------------------------------------ Batch file called with parameters: - "first arg" - "second arg" Exception: java.io.exception etc...
这样的事情可能会起作用:
javastart.cmd
@echo off set params=%* for /f "delims=" %%e in ('java something.jar method %1 %2 ^>nul') do ( echo Batch file called with parameters:>>log.txt echo - Args[]: %*>>log.txt echo - Arg[1]: %1>>log.txt echo - Arg[2]: %2>>log.txt echo Exception: %%e )
我自己不是一个java程序员,我不能测试这个输出/情况,但是:
1:%*表示每个参数,从1到最后(甚至,尽管它不是直接可用..)无论形成.可能会比使用这个更划算.甚至在间距/报价不佳的时候,你也会有完整的参数.我在日志中添加了一行,显示全线然后参数.如果这是一个不好的论据,你可以看到问题在哪里.
2:将stdout发送到null(^> nul)将只保留stderr输出,设置为%% e
3:无论做什么部分只会发生,因为测试语句实际上有什么作为输出,即如果设置了%% e.
有人说,您必须测试脚本,看看异常是否实际发送到stderr,或者像其他一些软件一样,即使发生错误也可以stdout.
我希望这有帮助.