Windows – 将批处理文件重定向到文件

前端之家收集整理的这篇文章主要介绍了Windows – 将批处理文件重定向到文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个执行 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.

我希望这有帮助.

猜你在找的Windows相关文章